برنامه نویسی عملگرا

کتاب برنامه‌ نویس عملگرا Pragmatic Programmer سحاب

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

یک محیط توسعه یکپارچه وب (Web IDE)، همچنین با عنوان IDE آنلاین یا Cloud IDE شناخته می‌شود، یک IDE مبتنی بر مرورگر است که امکان توسعه نرم‌افزار یا توسعه وب را فراهم می‌کند. از یک مرورگر وب مانند گوگل کروم یا موزیلا فایرفاکس می‌توانید به یک IDE وب دسترسی داشته باشید و یک محیط کار قابل حمل را فراهم کند. یک وب IDE معمولاً شامل همه ویژگی‌های یکسان با یک IDE سنتی یا رومیزی نیست، اگر چه تمام ویژگی‌های اصلی IDE مانند برجسته کردن نحو، معمولاً وجود دارد. در سیستم عامل‌های مختلف ویندوز مایکروسافت، از ابزارهای خط فرمان برای توسعه به ندرت استفاده می‌شود. با این حال، هر یک از طراحی متفاوتی که معمولاً ناسازگاری ایجاد می‌کند، استفاده می‌کنند. اکثر فروشندگان اصلی کامپایلر برای ویندوز هنوز نسخه‌های رایگان ابزار خط فرمان خود، از جمله مایکروسافت (Visual C ++، Platform SDK , .NET Framework SDK، ابزار nmake) را ارائه می‌دهند.

موضوع جالبی که در این راستا مطرح می‌شود این که است که ممکن است چند خط کد ظاهرا تکراری باشد؛ اما در واقع تنها با یک شباهت مواجه باشیم. در این موارد استخراج کد تکراری، مرتبط کردن دو کد نامربوط به هم و اشتباه است! نکتۀ دیگر این است که اجتناب از تکرار نباید فقط به کد محدود باشد. برای مثال برای نوشتن همین کتاب، عکس‌ها و کدهای موجود در کتاب به صورت اتوماتیک وارد کتاب می‌شوند و در صورت تغییر نسخۀ اصلی عکس و کد، در کتاب نیز تغییر داده شده و اعمال می‌شود. از دیگر مفاهیم مهم این بخش نیز می‌توان به موضوعاتی از قبیل «طراحی خوب چیست؟» یا «آیا مولفه‌های مختلف باید با هم مرتبط و یا بر هم عمود باشند» اشاره کرد.

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

شما سفارش میدین و ما اگر کتاب رو داشتیم یا تونستیم پیدا کنیم، شرایط خرید کتاب رو براتون فراهم می‌کنیم.

روان‌شناسی تغییر نیز در این فصل طرح موضوع شده و در ادامۀ کتاب مورد استفاده قرار می‌گیرد. برای مثال در این کتاب گفته می‌شد که هر پروژۀ نرم‌افزاری باید همیشه آمادۀ تغییر باشد. در مقابل افراد جلسه با این روش مخالف بودند و می‌گفتند تعدد APIها و wrapperها فقط برنامه را شلوغ و پیچیده کرده و اکثر آن‌ها در نهایت بلااستفاده خواهند بود. حتی فراتر از آن، عقیده داشتند که حسب پروژه‌هایی که تجربه کرده‌اند، برنامه معمولاً از جاهای پیش‌بینی شده تغییر نمی‌کند و از جایی تغییر خواهد کرد که انتظار آن را نداریم. APIها و wrapperها معمولاً در جایی قرار داده می‌شوند که انتظار تغییر را داریم و عملاً کارایی نخواهند داشت.

اگر بخواهیم کمی در مورد تاریخچۀ کتاب صحبت کنیم، باید به ویرایش اول کتاب که در سال ۱۹۹۹ منتشر شده نگاهی داشته باشیم. برنامه‌نویس عمل‌گرا کتاب معروفی در حوزۀ مهندسی نرم‌افزار بوده که توسط اندی هانت و دیو توماس نوشته شده است. موفقیت ویرایش اول این کتاب به حدی بود که نویسندگان این کتاب تصمیم به تاسیس انتشاراتی به نام «قفسه کتاب عمل‌گرا» گرفتند. این انتشارات، کتاب‌های متعددی با شعار «بهبود زندگی توسعه‌دهندگان حرفه‌ای نرم‌افزار» به چاپ رسانده است. در گذر زمان و با پیشرفت‌های روزبه‌روز حوزۀ نرم‌افزار، کتاب برنامه‌ نویس عمل‌گرا از یک کتاب مرجع به یک کتاب قدیمی تبدیل شد که تنها خاطرۀ خوشی از آن به یاد ماند. در سال ۲۰۱۹ به مناسبت بیستمین سالگرد انتشار این کتاب، ویرایش دوم آن با تغییرات عمده منتشر شد و توانست محبوبیت نسخۀ اول را تکرار کند.

تک دیک هیچ‌گونه مسئولیتی پیرامون این مطلب و محتوای صفحاتی که به آن‌ها در این مطلب لینک داده شده است یا خدمات مرتبط با آن‌ها بر عهده نمی‌گیرد و آن‌ها را تأیید یا رد نمی‌کند. برای اینکه در رابطه با مشتریان جدید خود زمان صرفه جویی کنیم، آغاز به یادداشت برداری کردیم و آن یادداشت‌ها تبدیل به کتابی به نام The Pragmatic Programmer شد. در کمال تعجب ما، به دید می‌رسید که این کتاب درد مشترکی را بیان می‌کرد و در این ۲۰ سال گذشته نیز دوست داشتنی باقی مانده است. برای دریافت کد تخفیف ۲۰ درصدی این کتاب، ابتدا صفحه اینستاگرام کازرون آنلاین(@kazerun.online ) را دنبال کنید. سپس، کلمه «بلیان» را در دایرکت ارسال کنید تا کد تخفیف به شما ارسال شود.

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

ابزارهای نرم‌افزاری GNU رایگان (مجموعه کامپایلر گنو (GCC)، اشکال زدایی GNU (GDB) و ساخت GNU) در بسیاری از سیستم عامل‌ها از جمله ویندوز در دسترس هستند. داده نمایشگر اشکال زدایی در نظر گرفته شده است به عنوان یک جلو گرافیکی پیشرفته برای بسیاری از ابزارهای استاندارد دیباگر مبتنی بر متن. برخی از برنامه نویسان، مدیریت ساختن فایلها و مشتقات آن را با ابزار ساختن کدهای مشابه که در یک IDE کامل گنجانده شده است، ترجیح می‌دهند. به‌عنوان مثال، بیشتر مشارکت کنندگان در پایگاه داده PostgreSQL و GDB را مستقیماً برای ایجاد ویژگیهای جدید استفاده می‌کنند. حتی هنگام ساخت PostgreSQL برای Microsoft Windows با استفاده از Visual C ++، از اسکریپت‌های Perl به جای اینکه به ویژگی‌های IDE تکیه کنید، جایگزینی برای ساخت استفاده می‌شود. برخی از IDEهای لینوکس مانند Geany تلاش می‌کنند تا جلوی گرافیکی را برای عملیات ساخت سنتی ارائه دهند.

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

سحاب در سال ۱۳۹۳ با هدف حل مسائل جمع آوری، نگهداری و تحلیل داده تشکیل شد و امروز برای نیازهای مختلف داده‌ای کسب‌وکارها، راه‌حل‌های داده‌محور ارائه می‌کند. این کتاب از ۹ بخش اصلی تشکیل شده که هرکدام از شامل چند فصل است که هر فصل نیز به مبحثی خاص می‌پردازد. در نگاه اول، فصول کتاب مستقل از هم هستند؛ ولی اگر کمی عمیق‌تر نگاه کنیم، به وجود ارتباطی میانشان پی خواهیم برد. پس پیشنهاد جایگزین چیست؟ این‌ که نظم برنامه را (با تکنیک‌های دیگری که در همین کتاب نیز به آن‌ها اشاره شده) حفظ کرده و از تغییر نترسیم. با این کار در مجموع زمانی که برای تغییر گذاشته می‌شود کمتر از مقدار زمانی است که برای نوشتن APIها و wrapperهای بلااستفاده گذاشته می‌شود.

پایتون یکی از محبوب‌ترین زبان‌های برنامه‌نویسی برای مبتدیان است. این زبان به دلیل سینتکس ساده و خوانا، یادگیری را بسیار آسان می‌کند. Python کاربردهای گسترده‌ای دارد؛ از توسعه وب و تحلیل داده‌ها گرفته تا هوش مصنوعی و یادگیری ماشین. این زبان به خوبی توسط جامعه برنامه‌نویسی پشتیبانی می‌شود و منابع آموزشی بی‌شماری برای آن وجود دارد. علاوه بر این، کتابخانه‌های متنوع Python مانند NumPy، Pandas و TensorFlow، ابزارهای قدرتمندی را برای پروژه‌های مختلف در اختیار شما قرار می‌دهند.

کتاب‌ها در اپلیکیشن کتابراه با فرمت‌های epub یا pdf و یا mp3 عرضه می‌شوند. هر چیزی را که شما یا همکاران‌تان طراحی کرده‌اید، می‌توان از منظری دیگر، با درک عمیق‌تر، تغییر نیازمندی‌ها و... اگر با عجله و بدون تأمل بخش‌هایی از کد را تغییر دهید، خواهید دید که در پایان، کد وضعیت بدتری پیدا کرده‌ است. انتظار می‌رود که یک IDE کنترل نسخه یکپارچه را به منظور تعامل با مخازن منبع فراهم کند. IDEهای پیشرفته پشتیبانی از پالایشگاه‌های خودکار را پشتیبانی می‌کنند.

یکی از دیگر مباحث مهم این بخش، تکرار نکردن یک چیز در جاهای مختلف است که در دنیای نرم‌افزار، به اصل DRY معروف بوده و اولین بار در نسخۀ اول این کتاب مطرح شده است. این موضوع که چقدر لازم است ویژگی‌های متعدد به نرم‌افزار اضافه کنیم، از دیگر بحث‌های چالشی این فصل است. تجربه نشان داده که مهندسین نرم‌افزار دوست دارند ویژگی‌هایی به نرم‌افزار اضافه کنند که در نهایت به درد نمی‌خورد. بنابراین در این کتاب پیشنهاد می‌شود از اضافه کردن ویژگی‌های غیر ضروری خودداری شود. از دیگر ویژگی‌های یک برنامه‌نویس حرفه‌ای، آشنایی با حوزه‌های مختلف و محدود نشدن به یک نرم‌افزار و یک چارچوب و همچنین توانایی ارتباط است. اندرو هانت (Andrew Hunt) و دیوید توماس (David Thomas) در این کتاب، نه به تعریف‌های کلیشه‌ای مهندسی پرداخته‌اند و نه سعی دارند که آن را به شکلی جدید تعریف کنند.

این نوع معماری را می‌توان به عنوان نوعی انتزاعی از اشیاء اطلاق کرد و طریقه کار آن به این صورت است که پیام‌های رد و بدل شده با دریافت عامل نرم‌افزاری تفسیر شده و به روش خاص خود به کلاس ارسال می‌شوند. برخی از ویژگی‌های IDE می‌توانند از پیشرفت‌های هوش مصنوعی بهره‌مند شوند. به‌طور خاص، می‌توان اطلاعاتی را از اقدامات IDE در بین توسعه دهندگان جمع‌آوری کرد تا ویژگی‌های IDE را تقویت کنند. به عنوان مثال، یک رویکرد مبتنی بر داده برای تکمیل کد منجر به تکمیل کد هوشمند می‌شود. ویرایشگر IDE معمولاً برجسته سازی نحو را ارائه می‌دهد، می‌تواند ساختارها، کلمات کلیدی زبان و خطاهای نحوی را با رنگ‌های بصری و جلوه‌های فونت نشان دهد.

بحث با روان‌شناسی انگیزشی شروع می‌شود که هر فرد به جای انفعال، باید خودش آیندۀ شغلی‌اش را تعیین کرده و همیشه به شرایط موجود راضی نباشد. درنتیجه زمانی وقت نوشتن ویرایش بیستمین سالگرد رسید، ما بایست تصمیمی می‌گرفتیم. ما می‌توانستیم تکنولوژی هایی که به آن‌ها ذکر کرده ایم را به روز کنیم، یا با توجه به دو دهه تجربه دیگری که به دست آورده ایم، فرضیات پشت روشهایی را که پیشنهاد کرده ایم مجددا تحقیق کنیم. برای مثال یک پیشرفت دهنده را از سال ۱۹۹۹ بردارید و آن را امروز داخل یک تیم قرار دهید و خواهید نظر که چگونه در این دنیای جدید عجیب و غریب تقلا می‌کند. نسخه قبلی کتاب به چیزهایی نظیر CORBA، CASE tools و indexed loops ذکر کرده بود که در مناسبترین وضعیت عجیب و گیج کننده بودند.

به عنوان مثال، Flycheck یک برنامه مدرن چک کردن نحو در پرواز برای GNU Emacs 24 با پشتیبانی از ۳۹ زبان است. ارتباط با دیگر برنامه‌نویسان می‌تواند به شما در یادگیری سریع‌تر و به دست آوردن فرصت‌های شغلی کمک کند. انجمن‌های آنلاین مانند GitHub، Stack Overflow و Reddit مکان‌های خوبی برای اشتراک‌گذاری تجربیات و پرسش و پاسخ هستند. همچنین، شرکت در رویدادهای برنامه‌نویسی و هکاتون‌ها می‌تواند به شما کمک کند تا با افراد حرفه‌ای در این حوزه آشنا شوید. موضوع دیگر این فصل، چگونگی شروع کردن یک پروژه از صفر بوده که دغدغۀ بسیاری از برنامه‌نویسان است. زبان خاص دامنه و تخمین زمانی در پروژه‌های نرم‌افزاری نیز از دیگر بحث‌های چالشی این بخش هستند.

دانستن مطالب کتاب برنامه‌نویسی عمل‌گرا برای هر کسی که علاقه‌مند به برنامه‌نویسی و در حالت کلی تولید نرم‌افزار است، ضروری است. یا این مطالب را از جاهای مختلف یاد بگیرید و یا با خواندن یک کتاب همه را مرور کنید. بخش پنجم که در ادامۀ مباحث طراحی پروژه است، بیشتر در مورد توانایی تغییر است. در همین راستا، برتری composition بر inheritance، مفاهیمی مثل decoupling و جدا کردن تنظیمات از کد مطرح می‌شود. همچنین نیم‌نگاهی نیز به برنامه‌نویسی تابعی و زنجیره‌های تبدیلی که ایجاد می‌کند، صورت می‌گیرد. ما با توجه به وفور فعلی سخت افزار موازی و فقدان راه‌های مناسب برای کار با آن ها، موضوعات وابسته به هموقتی را بازنویسی کردیم.

JavaScript نه تنها در مرورگرها، بلکه در سمت سرور نیز با استفاده از Node.js کاربرد دارد. این زبان بسیار انعطاف‌پذیر است و یادگیری آن می‌تواند فرصت‌های شغلی گسترده‌ای برای شما فراهم کند. برای شروع آموزش جاوا اسکریپت می‌توانید از منابع متنوع موجود استفاده کنید. برنامه‌نویسی تنها یک مهارت فنی نیست، بلکه ابزاری برای حل مسائل و خلق ایده‌های نوآورانه است. با یادگیری برنامه‌نویسی، شما می‌توانید اپلیکیشن‌های کاربردی، وب‌سایت‌ها، بازی‌ها و حتی نرم‌افزارهای پیچیده طراحی کنید. علاوه بر این، بازار کار برنامه‌نویسان بسیار پررونق است و شرکت‌ها به دنبال افراد با توانایی کدنویسی هستند.

روال جلسات بر این نبود که کسی کتاب را ارائه دهد و فرض بر این بود که تمام افراد حاضر در جلسه قسمت مربوطه را مطالعه کرده‌اند. بنابراین کل جلسه، پیرامون برداشت و نظر هر کدام از ما از مطالب کتاب می‌گذشت. نکتۀ مهمی که این جلسات را بسیار مفید می‌کرد این بود که همۀ محتوای کتاب، نه‌تنها بدون چون و چرا پذیرفته نمی‌شد، بلکه برعکس در جلساتمان به مباحث چالشی بسیاری برمی‌خوردیم. گاهی اوقات دو گروه موافق و مخالف، نظرات خود را پیرامون موضوع مربوطه مطرح می‌کردند و گاهی از بیان کتاب دو برداشت مختلف می‌شد. یک هدف از IDE، کاهش تنظیمات لازم برای تکمیل چندین برنامه توسعه است؛ در عوض همان مجموعه از قابلیت‌های یک واحد منسجم را فراهم می‌کند. کاهش زمان راه‌اندازی می‌تواند بهره‌وری توسعه دهنده را افزایش دهد؛ به خصوص در مواردی که یادگیری استفاده از IDE سریعتر از ادغام دستی و یادگیری همه ابزارهای فردی است.

این زبان به دلیل سادگی و سرعت بالا، به سرعت مورد توجه توسعه‌دهندگان قرار گرفته است. Swift به شما امکان می‌دهد اپلیکیشن‌های کاربرپسند و پرسرعتی برای دستگاه‌های اپل ایجاد کنید. این زبان با ابزارهایی مانند Xcode ترکیب می‌شود تا فرآیند توسعه آسان‌تر و کارآمدتر شود. اگر هدف شما ورود به دنیای اپلیکیشن‌های موبایل برای iPhone و iPad است، Swift بهترین انتخاب خواهد بود. تعداد صفحاتی که برای هر جلسه انتخاب می‌کردیم خیلی زیاد نبود (بین ۴۰ تا ۵۰ صفحه با فونت بزرگ). عامل محدودکننده برای انتخاب تعداد صفحات نیز نه زمان خواندن آن‌ها، بلکه زمانی بود که می‌خواستیم برای بحث دربارۀ مطالب هر فصل و بیان تجربیات مرتبط اختصاص دهیم.

این رویکرد همچنین در نرم‌افزارهای ویژه مانند Openlab استفاده می‌شود، جایی که کاربران نهایی می‌خواهند انعطاف‌پذیری یک زبان برنامه‌نویسی کامل، بدون منحنی یادگیری سنتی مرتبط با یک را داشته باشند. در بخش هفتم، مباحثی را که در حین کد زدن ایجاد می‌شود، بیان کرده که شامل موارد مهمی مانند تحلیل زمان اجرای الگوریتم، تست، refactoring و نام‌گذاری اجزای مختلف می‌شود. هرکدام از این عناوین بحث زیادی می‌طلبد و حتی برخی از آن‌ها دارای کتاب‌های جداگانه‌ای هستند. بالطبع در مورد هر کدام از این مطالب بحث‌های مفصلی داشتیم که از بیان آن در این‌جا چشم‌پوشی می‌کنم. به‌علاوه، مسائلی مثل امنیت نرم‌افزار نیز در این بخش مطرح شده که دارای نکات ارزشمندی هستند.

به‌علاوه اشاره‌ای نیز به بحث برنامه‌نویسی واکنشی (reactive programming) و برخی ایده‌های آن می‌شود که به‌طور ذاتی بسیاری از مشکلات هم‌روندی را حل می‌کند. بحث مربوط به برنامه‌نویسی واکنشی تا حدی ادامه پیدا کرد که یک جلسه مجزا برای بحث در مورد آن (خارج از جلسۀ کتاب) اختصاص پیدا کرد. فریم ورک ها و چهارچوب های زیادی در برنامه نویسی عامل گرا وجود دارد در پایین نمونه های ساده ای از انها را در زبان های گونان برنامه نویسی پرداختیم. محیط‌های توسعه یکپارچه به منظور به حداکثر رساندن بهره‌وری برنامه‌نویس با ارائه مؤلفه‌های گره‌دار با رابط‌های کاربری مشابه طراحی شده‌اند. IDEها یک برنامه واحد ارائه می‌دهند که در آن تمام توسعه‌ها انجام می‌شود.

Maestro I محصولی از Softlab مونیخ است و نخستین محیط توسعه یکپارچه جهان برای نرم‌افزار بود. امروز یکی از آخرین مائستروها را می‌توان در موزه فناوری اطلاعات در آرلینگتون یافت. اگر ترجیح می‌دهید با راهنمایی مستقیم یاد بگیرید، شرکت در کلاس‌های حضوری یا کارگاه‌های آموزشی می‌تواند انتخاب مناسبی باشد. این کتاب تئوری نبوده و بر روی مباحث کاربردی تمرکز کرده است  تا بتوانید با مصرف تجربه خودتان تصمیماتی آگاهانه بگیرید. سعی نکنید که بازسازی و اضافه‌ کردن توانایی و کارکرد‌های جدید را هم‌زمان انجام دهید.2. به این شیوه به‌ محض‌ اینکه چیزی را خراب کنید از آن مطلع می‌شوید.3.

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

ادغام تنگ‌تر از همه وظایف توسعه پتانسیل بهبود بهره‌وری کلی فراتر از کمک به کارهای تنظیم را دارد. این رابط با سیستم Lego Mindstorms رواج یافته است و توسط تعدادی از شرکت‌ها که مایل به سرمایه‌گذاری بر روی مرورگرهای سفارشی مانند آنچه در موزیلا است، فعالانه مورد سوء استفاده قرار می‌گیرد. KTechlab از کد پویا پشتیبانی می‌کند و یک IDE و شبیه‌ساز محبوب Open Source برای توسعه نرم‌افزار برای میکروکنترلرها است. برنامه‌نویسی ویژوال همچنین وظیفه قدرت برنامه‌نویسی توزیع شده را دارد (به عنوان مثال نرم‌افزار LabVIEW و EICASLAB). یک سیستم برنامه‌نویسی بصری اولیه، حداکثر، پس از طراحی سینت سایزر آنالوگ مدل شد و از 1980s برای توسعه نرم‌افزار عملکرد موسیقی در زمان واقعی استفاده می‌شود. نمونه اولیه دیگر Prograph بود، یک سیستم مبتنی بر dataflow که در ابتدا برای Macintosh توسعه یافته بود.

طبعاً مفاهیم تازه‌ای که با آن مواجه می‌شدم، برایم جذاب‌تر بود؛ اما وقت‌هایی که همۀ مطالب یک فصل را از قبل می‌دانستم نیز آن فصل برایم جذاب بود! برای مثال، مطالب فصل مربوط به اشکال‌زدایی برنامه برای من کمابیش تکراری بود. اشکال‌زدایی برنامه (چه برنامه‌هایی که خودم نوشتم و چه برنامه‌های دیگران)، همیشه برای من مثل حل یک معما است که برای آن در کمترین زمان باید تکنیک‌های مختلفی به ‌کار گرفته شود. بعداً فهمیدم که نام‌گذاری روی بعضی از این تکنیک‌ها مثل «اشکال‌زدایی با اردک پلاستیکی»، برای اولین بار در نسخۀ اول این کتاب انجام شده است. این کتاب از قیاس‌ها و داستان‌های کوتاه برای ارائه روش‌ها و نکات احتمالی استفاده می‌کند، به عنوان مثال نظریه پنجره‌های شکسته، داستان سوپ سنگی یا قورباغه جوشان.

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

گام‌های کوتاهِ آگاهانه بردارید؛ فیلدی از یک کلاس را به کلاس دیگر انتقال دهید، دو تابع مشابه در دو کلاس را در کلاس والد درهم ادغام کنید. بازسازی اغلب اوقات، شامل تغییرها محدود محلی است که نهایتاً، منجر به تغییر در مقیاس بزرگ‌تر می‌شود. اگر گام‌هایتان را کوچک بردارید و پس از هر گام، کد را بیازمایید، دیگر لازم نخواهد بود که اشکال‌زدایی‌های طولانی مدتی انجام دهید. در سال 1995 Computerwoche اظهار داشت که استفاده یک IDE توسط توسعه دهندگان به خوبی مورد استقبال قرار نگرفته است زیرا این امر در خلاقیت آنها حکمر خواهد زد. همچنین به ساختار برنامه‌نویسی ساخت یافته از IBM (1974) مراجعه کنید.

اپلیکیشن کتابخوان کتابراه برای اندروید، IOS و ویندوز در دسترس است. بحث دیگر، مسئولیت‌پذیری در برابر اشتباهات است که به گفتۀ نویسندگان، حل مشکل را نیز تسریع می‌کند. موضوع دیگری که مبحث مهمی در تمام کتاب به حساب می‌آید، حفظ نظم در پروژۀ نرم‌افزاری است. در واقع پروژه، به یک سیستم ترمودینامیکی تشبیه شده که به صورت معمول، به سمت بی‌نظمی (آنتروپی بیشتر) حرکت می‌کند؛ مگر این‌که با صرف انرژی نظم آن حفظ شود. ضمن این که اولین بی‌نظمی، راه را برای بی‌نظمی‌های دیگر باز کرده و دقت در این موضوع ضروری است. اصل پنجرۀ شکسته در روان‌شناسی که به همین موضوع اشاره دارد، برای اولین بار در نسخۀ اول این کتاب در حوزۀ نرم‌افزار مطرح شده است.

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

از طرف دیگر، منتقدان کتاب می‌گویند که این کتاب فاقد یک نظریۀ جدید بوده و مجموع تجربیاتی است که برنامه‌نویس‌های حرفه‌ای در طول عمر کاری خود، آن‌ها را به مرور و از جاهای مختلف کسب می‌کنند. کتاب برنامه‌ نویس عمل‌گرا (همان‌طور که از اسمش پیداست)، بیشتر به توانایی‌های فردی پرداخته و یک کتاب تخصصی محسوب می‌شود. در جلسۀ کتاب سحاب نیز تلاش می‌کنیم تا کتاب‌های خوانده شده، یک‌درمیان مدیریتی و تخصصی باشند. C++ و C# دو زبان قوی و پرکاربرد هستند که در حوزه‌های مختلفی مانند بازی‌سازی و توسعه نرم‌افزارهای کاربردی استفاده می‌شوند. C++ به دلیل سرعت و کارایی بالا در پروژه‌هایی که نیاز به عملکرد قوی دارند، مانند موتورهای بازی و سیستم‌های تعبیه‌شده، مورد استفاده قرار می‌گیرد. از سوی دیگر، C# زبان اصلی توسعه در محیط .NET است و برای ساخت برنامه‌های ویندوز و بازی‌های ویدیویی با استفاده از Unity بسیار مناسب است.

در حالی که اکثر IDEهای مدرن گرافیکی هستند، IDEهای مبتنی بر متن مانند Turbo Pascal قبل از در دسترس بودن سیستم‌های پنجره‌ای مانند مایکروسافت ویندوز و X Window System (X11) مورد استفاده رایج قرار می‌گرفتند. آنها برای اجرای دستورها یا ماکروها معمولاً از کلیدهای عملکردی یا کلیدهای مهم استفاده می‌کنند. هدف ما این بود که مطالب را واضح‌تر ، مرتبط‌تر و دلگرمیوارم تا محدودهی بدون اثر از وقت بکنیم. بعضی از IDEها از چندین زبان پشتیبانی می‌کنند، مانند GNU Emacs مبتنی بر زبان سی و Emacs Lisp و IntelliJ IDEA , اکلیپس، MyEclipse یا NetBeans، همه بر اساس جاوا، یا MonoDevel، مبتنی بر سی‌شارپ یا PlayCode. بخش عمده هزینه‌های تک دیک با بودجه شخصی و حمایت‌های شما کاربران گرامی تأمین می‌شود. اگر محتوای این صفحه برای شما مفید واقع شده با روش‌های مختلفی از سراسر دنیا می‌توانید در تکمیل و تداوم فعالیت این سایت به گروه کوچک ما کمک کنید و در اجر معنوی آن نیز سهیم شوید.

ابزارها و فریم‌ورک‌هایی مانند Spring و Hibernate نیز به توسعه‌دهندگان Java امکانات بیشتری می‌دهند. برای شروع آموزش جاوا می‌توانید از منابع متنوع موجود استفاده کنید. هرکسی که (هر چند کم) برنامه‌نویسی کرده باشد، به خوبی می‌داند که دانش برنامه‌نویسی به هیچ عنوان یادگیری نحو یک زبان برنامه‌نویسی نیست. کتاب برنامه‌ نویس عمل‌گرا موضوعاتی از این دست را مورد بررسی قرار می‌دهد. برنامه نویسان یونیکس می‌توانند ابزارهای خط فرمان POSIX را در یک محیط کامل توسعه، قادر به توسعه برنامه‌های بزرگی مانند هسته لینوکس و محیط آن قرار دهند.

تعیین نیازمندی‌های پروژه، خلاقیت، کار تیمی، متدولوژی‌های چابک و تعریف هدف پروژه، بعضی از مفاهیمی هستند که در این دو بخش مورد بررسی قرار می‌گیرند. برای مثال از جالب‌ترین بحث‌های این جلسات این بود‌ که برنامه‌نویس‌ها نیز باید در فرآیند تعیین نیازمندی‌ها حضور فعال داشته و مثل یک دکتر روان‌شناس، کارفرمای پروژه را به نیازمندی واقعی خود هدایت کنند. در ابتدا اشکالاتی که ممکن است در اجرای هم‌روند به وجود بیاید، به خوبی تشریح می‌شوند. در یکی از فصل‌ها، کتاب به این اشاره می‌کند که اشکال‌هایی که به صورت تصادفی و گاهی اوقات پیش می‌آیند، معمولاً مربوط به اجرای هم‌زمان هستند. یکی از این راه‌حل‌ها، استفاده از ماشین حالات متناهی (finite state machine) است که در درس نظریۀ زبان‌ها و ماشین‌ها (و درس‌های دیگری مثل مدارهای منطقی) به‌عنوان اتوماتا تدریس می‌شود.

تکمیل کد یک ویژگی مهم IDE است که برای سرعت بخشیدن به برنامه‌نویسی در نظر گرفته شده است. مرز بین IDE و سایر قسمت‌های وسیع‌تر از توسعهٔ نرم‌افزار کاملاً مشخص نیست. گاهی یک سیستم کنترل نسخه یا ابزارهای مختلف برای ساده‌سازی یک رابط کاربری گرافیکی (GUI) یکپارچه شده است. بسیاری از IDEهای مدرن همچنین دارای یک مرورگر کلاس، یک مرورگر شیء و یک نمودار سلسله مراتبی کلاس برای استفاده در توسعهٔ نرم‌افزار شی‌گرا هستند. کتاب‌های مرجعی مانند “Automate the Boring Stuff with Python” یا “Eloquent JavaScript” می‌توانند برای یادگیری عمیق‌تر مفید باشند. بخش اول قصد دارد بدون ورود به مفاهیم نرم‌افزاری، دید و تفکری درست به برنامه‌نویس بدهد.


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