چرا همه برای یاد گیری برنامه نویسی عجله دارند ؟
داخله هر کتاب Ùروشی ای Ú©Ù‡ برین Ú©Ù„ÛŒ کتاب هست با عنوان های یاد گیری برنامه نویسی در 21 روز ØŒ 7 روز Ùˆ ....
در صورتی که در گوگل دنبال کتاب باشید کلماتی مانند hours و days در عنوان کتاب های زیادی پیدا می کنید.
این نشون دهنده اینه Ú©Ù‡ مردم عجله دارند Ú©Ù‡ برنامه نویسی رو خیلی سریع یادبگیرند یا Ùکر Ù…ÛŒ کنند Ú©Ù‡ یادگیری برنامه نویسی آسونه ØŒ اما در علم های دیگه مانند Ùیزیک ØŒ شیمی Ùˆ... کتابی با عنوان یادگیری در 21 روز پیدا نمی کنید.
زمانی Ú©Ù‡ آنها Ù…ÛŒ گویند: "برنامه نویسی بد آسان است. اØمقها Ù…ÛŒ توانید آن را در 21 روز یاد بگیرید.
خوب بزارین تجزیه کنیم که کلمه " یادگیری برنامه نویسی c++ در سه روز " چه معنی ای میده :
یادگیری : بدانید Ú©Ù‡ شما نمی تونید در سه روز برنامه های مختلÙÛŒ بنویسید Ùˆ از شکست ها Ùˆ موÙقیت ها درس بگیرید. شما در این مدت نمی تونید با یک برنامه نویسی ØرÙÙ‡ ای کار کنید Ùˆ نمی تونید درک کنید Ú©Ù‡ برنامه نویسی c++ دقیقا چیه.بیشتر این کتاب ها اصول Ùˆ کلیات زبان برنامه نویسی رو یاد میدن Ùˆ نه بیشتر ØŒ به عنوان مثال الکساندر پاپ Ù…ÛŒ گوید : "یاد گیری سطØÛŒ ØŒ کاری خطرناک است"
در c++ : شما ممکن است در سه روز Ú©Ù…ÛŒ با Ù†ØÙˆ املایی c++ آشنا بشید(در صورتی Ú©Ù‡ شما از قبل با زبانی دیگر آشنا باشید) اما شما نمی تونید چیز زیادی در رابزه با استÙاده از این زبان یادبگیرید.در این مدت کوتاه ممکنه Ú©Ù‡ شما به صورته پایه برنامه نویسی c++ رو یاد بگیرید اما نمی تونید بÙهمید Ú©Ù‡ در c++ Ú†Ù‡ چیزی خوب Ùˆ یا بد است.بنابر این این نظر چیست ØŸ آلن پرلیس Ù…ÛŒ گوید :" یک زبان برنامه نویسی تاثیری ندارد در مورد روشی Ú©Ù‡ شما Ùکر Ù…ÛŒ کنید در رابطه با برنامه نویسی ØŒ این یادگیری ارزشی ندارد " . نکته ای Ú©Ù‡ هست اینه Ú©Ù‡ شاید شما مجبور باشید Ú©Ù…ÛŒ از زبان برنامه نویسی c++ رو یاد بگیرید .
در سه روز : متاسÙانه این کاÙÛŒ نیست ØŒ برای نشان دادن بخش بعدی.
خودتان برنامه نویسی رو در 10 سال یاد بگیرید
تØقیق Ù…Øققان(( Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973)) نشان داده Ú©Ù‡ یادگیری بسیاری از علوم به صورته ØرÙÙ‡ ای مانند : شطرنج ØŒ شنا ØŒ ساخت موزیک Ùˆ ... بیش از 10 سال زمان Ù…ÛŒ برد.
راه ØÙ„ انجام این کار به صورت مشورتی است : Ùقط نباید این کار رو دوباره Ùˆ دوباره انجام داد ØŒ اما خودتون رو با توانایی Ùعلی تون به چالش بکشید ØŒ سعی تون رو بکنید ØŒ کار آیی خودتون رو بسنجید قبل Ùˆ بعد از انجام این کار Ùˆ اشتباه هاتون رو تصØÛŒØ Ú©Ù†ÛŒØ¯ .این کار رو تکرار کنید ØŒ Ùˆ دوباره.
هیچ میانبر واقعی ای وجود ندارد : Øتی موزرات Ú©Ù‡ در سن 4 سالگی یم نابغه موسیقی بود ØŒ 13 سال طول کشید تا اولین موسیقی ØرÙÙ‡ ای در Ø³Ø·Ø Ø¬Ù‡Ø§Ù†ÛŒØ´ رو بسازه.در گروه دیگر موسیقی مانند بیتلز Ú©Ù‡ بیشتر موزیک هاشون در سال 1964 Ù…Øبوب بود ØŒ توجه کنید این گروه هم از سال 1957 در مکان های Ú©ÙˆÚ†Ú© تر برنامه اجرا Ù…ÛŒ کردند.مالکوم گلدل یکی از تØقیقاتش را گزارش Ù…ÛŒ کنید Ú©Ù‡ در این تØقیق از دانش آموزان Ø³Ø·Ø Ø¨Ø§Ù„Ø§ ØŒ Ø³Ø·Ø Ù…ØªÙˆØ³Ø· Ùˆ Ø³Ø·Ø Ù¾Ø§ÛŒÛŒÙ† آکادمی برلین Ù…ÛŒ خواهد بگویند Ú©Ù‡ آنها چقدر تمرین کرده اند :
همه ØŒ در هر سه Ø³Ø·Ø ØªÙ‚Ø±ÛŒØ¨Ø§ در سن 5 سالگی شروع کرده اند.در چند سال اول همه تقریبا همان 2 تا 3 ساعت تمرین در Ù‡Ùته تمرین داشته اند.اما اطرا٠سن هشت سالگی به صورت کاملا متÙاوت شروع کرده اند.اون هایی Ú©Ù‡ در کلاس بهتر بودن زودتر Ùˆ بیشتر از دیگران تمرین کرده بودند : 6 ساعت در Ù‡Ùته در سن 9 سالگی ØŒ 9 ساعت در Ù‡Ùته در سن 12 سالگی ØŒ 16 ساعت در Ù‡Ùته در سن 14 سالگی Ùˆ بالا تر Ùˆ بالاتر تا اینکه سن شان به بیست Ù…ÛŒ رسد Ùˆ تمرین شان به 30 ساعت در Ù‡Ùته Ù…ÛŒ رسد.با رسیدن به بیست سالگی آن ها بیشتر از 10ØŒ000 ساعت تمرین کرده اند .دانش آموزان رده پایین تر 8ØŒ000 ساعت Ùˆ معلمان آینده موسیقی 4ØŒ000 ساعت تمرین کرده اند.
ممکنه که مدت زمان مورد نیاز برای یاد گیری برنامه نویسی 10،000 ساعت باشه نه 10 سال
( Henri Cartier-Bresson Ú¯Ùته اند : "10ØŒ000 عکس شما بد ترین آنها هستند" )
( Samuel Johnson Ùکر Ù…ÛŒ کردم زمان بیشتری نیاز هست : "دستیابی به برتری در هر بخش Ùˆ کاری Ùقط با یک عمر کار بدست Ù…ÛŒ آید Ùˆ با چیز دیگری قابل خریدن نیست")
(Chaucer شکایت می کند : "زندگی کوتاه است ، بنابراین یادگیری هنر طول می کشد")
بنابراین شما می خواین یک برنامه نویس باشید ؟ این توصیه ها برای شماست.
دستورالعمل برای موÙقیت در برنامه نویسی.
علاقه مند شوید به برنامه نویسی ، دلیل تون این باشه که اون سرگرم کننده است. و مطمئن شوید که به آن علاقه مند می مانید ، چون قرار است 10 سال یا 10،000 ساعت از عمرتان را روی آن بگذارید.
برنامه .بهترین نوع یادگیری ، یادگیری بصورته عملی است.
با دیگر برنامه نویس ها صØبت کنید;سورس برنامه ها را بخوانید. این کار از هر کتابی یا هر درس آموزشی ای مهم تر است.
اگر شما Ù…ÛŒ خواهید 4 سال از عمرتان را در دانشگاه بگذرانید .این کار به شما دسترسی Ù…ÛŒ دهد به شغل هایی Ú©Ù‡ نیاز به این اعتبار دارند ØŒ Ùˆ این کار به شما Ùهم عمیقی از این Øوزه Ù…ÛŒ دهد ،اما اگه شما از دانشگاه خوشتان نمی آید شما Ù…ÛŒ تونید تجربه متÙاوتی در کار بدست بیارین.در هر موردی ØŒ آموزش تنها Ùقط با کتاب نمی تونه کاÙÛŒ باشه. Eric Raymond نویسنده "The New Hacker's Dictionary" Ù…ÛŒ گوید : " آموزش علوم کامپیوتر نمی تونه هیچ کسی رو برنامه نویس ØرÙÙ‡ ای بسازه مانند اینکه مطالعه قلمو Ùˆ رنگدانه نمی تونه شما رو نقاش کنه". یکی از بهترین برنامه نویسانی Ú©Ù‡ من تا الان استخدام کردم Ùقط تا دبیرستان درس خوانده بود. اون بزرگترین نرم اÙزار ها رو تولید کرده ØŒ اون گروه Ú¯ÙˆÚ¯Ù„ خودش رو داره Ùˆ انقدر پول در آورد Ú©Ù‡ بتونه کلوپ شبانه خودش رو بخره.
روی یک پروژه با دیگر برنامه نویس ها کار کنید.در بعضی پروژه ها بهترین Ùˆ در بعضی دیگر بد ترین باشید.هنگامی Ú©Ù‡ شما بهترین هستید ØŒ شما امتØان کنید توانایی تون رو برای مدیریت یک پروژه Ùˆ الهام بخش دیگران باشید.هنگامی Ú©Ù‡ شما بد ترین هستید ØŒ یا بگیرید Ú©Ù‡ مدیر چکار Ù…ÛŒ کند ØŒ Ùˆ یاد Ù…ÛŒ گیرید Ú©Ù‡ Ú†Ù‡ چیز را دوست ندارند Ú©Ù‡ انجام بدهند.(چونکه از شما Ù…ÛŒ خوان این کار رو انجام بدین)
بعد از دیگر برنامه نویسان روی پروژه کار کنید.نوشتن برنامه نوشته شده به وسیله دیگران رو درک کنید .ببینید Ú©Ù‡ برنامه نویس اصلی Ú†Ù‡ کاری رو Ù†Ùهمیده Ùˆ انجام نداده Ùˆ شما آنرا کامل کنید. به اینکه چطور برنامه هاتون رو طراØÛŒ کنید Ú©Ù‡ برنامه نویسی Ú©Ù‡ قرار از اون نگهداری کنه کارش آسونتر بشه.
Øداقل نص٠زبان های برنامه نویسی را یاد بگیرید. شامل یک زبان Ú©Ù‡ پشتیبانی کند ویژگی کلاس رو (مانند : c++ , java) ØŒ یک زبان Ú©Ù‡ از ویژگی تابع پشتیبانی کند(مانند ML یا lisp) ØŒ یک زبان Ú©Ù‡ اعلان رو پشتیبانی کنه (Prolog یا C++ templates) ØŒ یک زبان Ú©Ù‡ از coroutines پشتیبانب کنه(Icon یا Scheme) Ùˆ یک زبان برای اینکه از برنامه نویسی موازی پشتیبانی کند (Sisal)
یادتون باشه Ú©Ù‡ ما در "علوم کامپیوتر" با کامپبوتر سروکار داریم.بدانید Ú©Ù‡ چقدر طول Ù…ÛŒ کشد Ú©Ù‡ کامپیوتر شما دستورالعمل رو اجرا کنه ØŒ یک کلمه رو از ØاÙظه برداره (با ØاÙظه Ú©Ø´ Ùˆ بدون آن) ØŒ کلمات پشت سر هم رو از هار بخونه ØŒ یا به یک مکان جدید روی هارد بره.
تلاش کنید Ú©Ù‡ یک زبان رو استاندارد کنید. اون Ù…ÛŒ تونه کمیسیون ANSI C++‎ باشه یا Ù…ÛŒ توانید کد نویسی خودتون رو استاندارد کنید مانند تعداد Ùرو رÙتگی ها . در هر صورت شما یاد میگیرید Ú©Ù‡ مردم Ú†Ù‡ چیز هایی رو در یک زبان دوست دارند ØŒ Ú†Ù‡ مقدار این Øس رو دارند Ùˆ در نهایت اینکه Øتی ممکنه مقداری هم درباره اینکه چرا آنها این Øس رو دارند.
تلاش کردن برای پیاده سازی استاندارد در یک زبان در سریع ترین زمان اØساس خوبی داره.
با توجه به تمام این مسائل ØŒ این سوال به وجود میاد Ú©Ù‡ شما Ùقط با کتاب تا Ú†Ù‡ Øد Ù…ÛŒ تونید یاد بگیرید.قبل از به دنیا اومدن اولین بچه ام ØŒ همه کتاب های "چگونه Ù…ÛŒ توان ..." رو خونده بودم ØŒ هنوز اØساس Ù…ÛŒ کردم یک تازه کارم. 30 ماه بعد ØŒ هنگامی Ú©Ù‡ بچه ÛŒ دوم من به دنیا آمد ØŒ آیا من به کتاب های تازه تر بر Ù…ÛŒ گشتم ØŸ خیر . به جای آن من به تجربه شخصیم تکیه Ù…ÛŒ کردم.به عقیده من تجربه شخصی ام Ù…Ùید تر Ùˆ کامل تر از هزاران صÙØÙ‡ از نوشته های کارشناسان است.
Fred Brooks در مقاله خود به نام " No Silver Bullet" برنامه ای سه بخشی برای شناسایی طراØان بزرگ نرم اÙزار Ø·Ø±Ø Ù…ÛŒ کند :
با روش سیستمی بهترین طراØان نرم اÙزار رو پیدا کنید.
یک مربی ØرÙÙ‡ ای مسئول توسعه چشم انداز اختصاص بدهید.
Ùرصتی به وجود بیارن تا طراØان با یکدیگر در ارتباط باشند Ùˆ در صدد تØریک هم بر آیند.
بر این Ùرض است Ú©Ù‡ بعض از مردم ویژگی هایی Ú©Ù‡ نیاز است تا Ø·Ø±Ø§Ø Ø¨Ø²Ø±Ú¯ÛŒ شوند را دارند;کار اینه Ú©Ù‡ اون ها رو کنار هم به درستی قرار داد.
Alan Perlis به صورته علمی تر Ù…ÛŒ گوید : " همه Ù…ÛŒ تونن به Øجاری آموزش داده شوند ØŒ Michelangelo باید یاد میگرÙت Ú©Ù‡ چطور این کار رو انجام نده. پس باید برنامه نویسان هم همین طور است."
همچنین Alan Perlis گقت : "بعضی نوابغ ØŒ ویژگی داخلی شان Ùراتر از آموزش آنهاست." اما این ویژگی از کجا میاد ØŸ ذاتی است ØŸ یا اینکه آنها با سعی Ùˆ تلاش آنرا توسعه Ù…ÛŒ دهند؟ "همه Ù…ÛŒ تونن برنامه نویس بشند اما اونی بزرگ میشه Ú©Ù‡ بی باک باشه."
Anton Ego می گوید : " همه نمی تونن بازیگری بزرگ بشند ، اما یک بازیگر بزرگ می تون از هر جایی بیاد."
پس برین Ùˆ کتاب های Java/Ruby/**********/PHP Ùˆ غیره رو بخرید ; اØتمالا شما Ú©Ù…ÛŒ از آنها استÙاده کنید. اما شما نمی تونید زندگی تون رو عوض کنید ØŒ یا تخصص Ú©Ù„ واقعی ØرÙÙ‡ ای تون رو در برنامه نویس رو در 24 ساعت ØŒ روز یا Øتی در یک Ù‡Ùته .Ú†Ú¯.نه است Ú©Ù‡ بیشتر از 24 ماه به صورته مستمر Ùˆ سخت کار کنید برای بهبود بخشیدن آن ØŸ خوب شما شروع Ù…ÛŒ کنید به گرÙتن جایی ...
اجرای دستور معمولی
1/1,000,000,000 sec = 1 nanosec
واکشی از ØاÙظه Ú©Ø´ L1
0.5 nanosec
شاخه misprediction
5 nanosec
واکشی از ØاÙظه Ú©Ø´ L2
7 nanosec
mutex Ù‚ÙÙ„ / باز کردن
25 nanosec
واکشی از ØاÙظه اصلی
100 nanosec
ارسال 2 kb روی شبکه 1Gbps
20,000 nanosec
خواندن Ù¾ÛŒ در Ù¾ÛŒ 1MB از ØاÙظه
250,000 nanosec
واکشی از Ù…ØÙ„ دیسک جدید (seek)
8,000,000 nanosec
خواندن پی در پی 1MB از دیسک 20,000,000 nanosec
ارسال اطلاعات آمریکا به اروپا و برگشت
150 milliseconds = 150,000,000 nanosec
ضمیمه : انتخاب زبان برنامه نویسی
چند Ù†Ùر از من پرسیده اند Ú©Ù‡ Ú†Ù‡ زبان برنامه نویسی ای رو برای شروع برنامه نویسی انتخاب کنند.یک پاسخ قطعی وجود ندارد ØŒ اما نکات زیر را مد نظر داشته باشید:
از دوست تان استÙاده کنید . هنگامی Ú©Ù‡ میپرسه : " از Ú†Ù‡ سیستم عاملی استÙاده کنم ØŒ ویندوز ØŒ لینوکس یا Ù…Ú© ØŸ" ØŒ معمولا پاسخ من این است : " از هر چیزی Ú©Ù‡ دوستت استÙاده Ù…ÛŒ کنه استÙاده Ú©Ù†" با این کار از مزیت یادگیری از دوستت استÙاده Ù…ÛŒ Ú©Ù†ÛŒ ØŒ با این کار Ùرق بین همه سیستم عامل ها Ùˆ زبان های برنامه نویسی رو کنار خواهید گذاشت.همچنین دوستان آینده خود را در نظر بگیرید : شما بخشی از جامعه برنامه نویسان خواهید بود اگر ادامه بدهید.زبان مورد انتخاب شما دارای جامعه دارای رشد است یا در Øال مرگ ؟آیا کتاب ØŒ وب سایت ØŒ انجمن آنلاین برای دریاÙت پاسخ وجود دارد ØŸ آیا مردم داخله این انجمن را دوست دارید ØŸ
ساده نگهش دار .زبان های برنامه نویسی مانند c++ ,java برای پروژه های بزرگ طراØÛŒ شده اند Ú© توسعه دهندگان به وسیله تیم های بزرگ با تجربه از آن استÙاده Ù…ÛŒ شود Ú©Ù‡ بهروه وری زمان اجرا برایشان مهم است.در نتیجه این زبان برای این شرایط طراØÛŒ شده است.شما نیاز ندارید از این زبان استÙاده کنید زیرا قصد شما یادگیری برنامه نویسی است.شما به پیچیدگی نیازی ندارید.شما یک زبان برنامه نویسی را Ù…ÛŒ خواهید Ú©Ù‡ برای آموزش آسان برنامه نویسی طراØÛŒ شده باشد Ùˆ در یاد یک برنامه نویس جدید بماند.
کدام راه را برای یادگیرÙتن پیانو Ù…ÛŒ پسندید : راه اول اینکه پس از Ùشار دادن هر کلید پیانو صدای نت را Ù…ÛŒ شنوید یا اینکه بعد از Ùشار دادن همه کلید ها صدا را بشنوید ØŸ معلوم است ØŒ شما راه تعاملی را بیشتر Ù…ÛŒ پسندید.توصیه Ù…ÛŒ کنیم Ú©Ù‡ از یک زبان برنامه نویسی تعاملی استÙاده کنید.
توصیه من این است Ú©Ù‡ شما از Python یا Scheme استÙاده کنید.اما شرایط شما ممکن است متÙاوت باشد ØŒ Ùˆ دیگر انتخاب های خوبی وجود داشته باشد. اگر سن شما تک رقمی باشد، شما ممکن Alice یا Squeak (زبان آموزان مسن تر ممکن است این لذت بردن) را ØªØ±Ø¬ÛŒØ Ù…ÛŒ دهند. نکته مهم این است Ú©Ù‡ شما را انتخاب کنید Ùˆ شروع کنید.
نکته : به دلیل قدیمی بودن مقاله اصلی ممکن است بعضی زبان های نام برده شده دیگر کاربرد نداشته باشند.
مترجم : سید اØمد الهی
ایمیل : [email protected]
سایت مترجم : www.progforum.ir
داخله هر کتاب Ùروشی ای Ú©Ù‡ برین Ú©Ù„ÛŒ کتاب هست با عنوان های یاد گیری برنامه نویسی در 21 روز ØŒ 7 روز Ùˆ ....
در صورتی که در گوگل دنبال کتاب باشید کلماتی مانند hours و days در عنوان کتاب های زیادی پیدا می کنید.
این نشون دهنده اینه Ú©Ù‡ مردم عجله دارند Ú©Ù‡ برنامه نویسی رو خیلی سریع یادبگیرند یا Ùکر Ù…ÛŒ کنند Ú©Ù‡ یادگیری برنامه نویسی آسونه ØŒ اما در علم های دیگه مانند Ùیزیک ØŒ شیمی Ùˆ... کتابی با عنوان یادگیری در 21 روز پیدا نمی کنید.
زمانی Ú©Ù‡ آنها Ù…ÛŒ گویند: "برنامه نویسی بد آسان است. اØمقها Ù…ÛŒ توانید آن را در 21 روز یاد بگیرید.
خوب بزارین تجزیه کنیم که کلمه " یادگیری برنامه نویسی c++ در سه روز " چه معنی ای میده :
یادگیری : بدانید Ú©Ù‡ شما نمی تونید در سه روز برنامه های مختلÙÛŒ بنویسید Ùˆ از شکست ها Ùˆ موÙقیت ها درس بگیرید. شما در این مدت نمی تونید با یک برنامه نویسی ØرÙÙ‡ ای کار کنید Ùˆ نمی تونید درک کنید Ú©Ù‡ برنامه نویسی c++ دقیقا چیه.بیشتر این کتاب ها اصول Ùˆ کلیات زبان برنامه نویسی رو یاد میدن Ùˆ نه بیشتر ØŒ به عنوان مثال الکساندر پاپ Ù…ÛŒ گوید : "یاد گیری سطØÛŒ ØŒ کاری خطرناک است"
در c++ : شما ممکن است در سه روز Ú©Ù…ÛŒ با Ù†ØÙˆ املایی c++ آشنا بشید(در صورتی Ú©Ù‡ شما از قبل با زبانی دیگر آشنا باشید) اما شما نمی تونید چیز زیادی در رابزه با استÙاده از این زبان یادبگیرید.در این مدت کوتاه ممکنه Ú©Ù‡ شما به صورته پایه برنامه نویسی c++ رو یاد بگیرید اما نمی تونید بÙهمید Ú©Ù‡ در c++ Ú†Ù‡ چیزی خوب Ùˆ یا بد است.بنابر این این نظر چیست ØŸ آلن پرلیس Ù…ÛŒ گوید :" یک زبان برنامه نویسی تاثیری ندارد در مورد روشی Ú©Ù‡ شما Ùکر Ù…ÛŒ کنید در رابطه با برنامه نویسی ØŒ این یادگیری ارزشی ندارد " . نکته ای Ú©Ù‡ هست اینه Ú©Ù‡ شاید شما مجبور باشید Ú©Ù…ÛŒ از زبان برنامه نویسی c++ رو یاد بگیرید .
در سه روز : متاسÙانه این کاÙÛŒ نیست ØŒ برای نشان دادن بخش بعدی.
خودتان برنامه نویسی رو در 10 سال یاد بگیرید
تØقیق Ù…Øققان(( Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973)) نشان داده Ú©Ù‡ یادگیری بسیاری از علوم به صورته ØرÙÙ‡ ای مانند : شطرنج ØŒ شنا ØŒ ساخت موزیک Ùˆ ... بیش از 10 سال زمان Ù…ÛŒ برد.
راه ØÙ„ انجام این کار به صورت مشورتی است : Ùقط نباید این کار رو دوباره Ùˆ دوباره انجام داد ØŒ اما خودتون رو با توانایی Ùعلی تون به چالش بکشید ØŒ سعی تون رو بکنید ØŒ کار آیی خودتون رو بسنجید قبل Ùˆ بعد از انجام این کار Ùˆ اشتباه هاتون رو تصØÛŒØ Ú©Ù†ÛŒØ¯ .این کار رو تکرار کنید ØŒ Ùˆ دوباره.
هیچ میانبر واقعی ای وجود ندارد : Øتی موزرات Ú©Ù‡ در سن 4 سالگی یم نابغه موسیقی بود ØŒ 13 سال طول کشید تا اولین موسیقی ØرÙÙ‡ ای در Ø³Ø·Ø Ø¬Ù‡Ø§Ù†ÛŒØ´ رو بسازه.در گروه دیگر موسیقی مانند بیتلز Ú©Ù‡ بیشتر موزیک هاشون در سال 1964 Ù…Øبوب بود ØŒ توجه کنید این گروه هم از سال 1957 در مکان های Ú©ÙˆÚ†Ú© تر برنامه اجرا Ù…ÛŒ کردند.مالکوم گلدل یکی از تØقیقاتش را گزارش Ù…ÛŒ کنید Ú©Ù‡ در این تØقیق از دانش آموزان Ø³Ø·Ø Ø¨Ø§Ù„Ø§ ØŒ Ø³Ø·Ø Ù…ØªÙˆØ³Ø· Ùˆ Ø³Ø·Ø Ù¾Ø§ÛŒÛŒÙ† آکادمی برلین Ù…ÛŒ خواهد بگویند Ú©Ù‡ آنها چقدر تمرین کرده اند :
همه ØŒ در هر سه Ø³Ø·Ø ØªÙ‚Ø±ÛŒØ¨Ø§ در سن 5 سالگی شروع کرده اند.در چند سال اول همه تقریبا همان 2 تا 3 ساعت تمرین در Ù‡Ùته تمرین داشته اند.اما اطرا٠سن هشت سالگی به صورت کاملا متÙاوت شروع کرده اند.اون هایی Ú©Ù‡ در کلاس بهتر بودن زودتر Ùˆ بیشتر از دیگران تمرین کرده بودند : 6 ساعت در Ù‡Ùته در سن 9 سالگی ØŒ 9 ساعت در Ù‡Ùته در سن 12 سالگی ØŒ 16 ساعت در Ù‡Ùته در سن 14 سالگی Ùˆ بالا تر Ùˆ بالاتر تا اینکه سن شان به بیست Ù…ÛŒ رسد Ùˆ تمرین شان به 30 ساعت در Ù‡Ùته Ù…ÛŒ رسد.با رسیدن به بیست سالگی آن ها بیشتر از 10ØŒ000 ساعت تمرین کرده اند .دانش آموزان رده پایین تر 8ØŒ000 ساعت Ùˆ معلمان آینده موسیقی 4ØŒ000 ساعت تمرین کرده اند.
ممکنه که مدت زمان مورد نیاز برای یاد گیری برنامه نویسی 10،000 ساعت باشه نه 10 سال
( Henri Cartier-Bresson Ú¯Ùته اند : "10ØŒ000 عکس شما بد ترین آنها هستند" )
( Samuel Johnson Ùکر Ù…ÛŒ کردم زمان بیشتری نیاز هست : "دستیابی به برتری در هر بخش Ùˆ کاری Ùقط با یک عمر کار بدست Ù…ÛŒ آید Ùˆ با چیز دیگری قابل خریدن نیست")
(Chaucer شکایت می کند : "زندگی کوتاه است ، بنابراین یادگیری هنر طول می کشد")
بنابراین شما می خواین یک برنامه نویس باشید ؟ این توصیه ها برای شماست.
دستورالعمل برای موÙقیت در برنامه نویسی.
علاقه مند شوید به برنامه نویسی ، دلیل تون این باشه که اون سرگرم کننده است. و مطمئن شوید که به آن علاقه مند می مانید ، چون قرار است 10 سال یا 10،000 ساعت از عمرتان را روی آن بگذارید.
برنامه .بهترین نوع یادگیری ، یادگیری بصورته عملی است.
با دیگر برنامه نویس ها صØبت کنید;سورس برنامه ها را بخوانید. این کار از هر کتابی یا هر درس آموزشی ای مهم تر است.
اگر شما Ù…ÛŒ خواهید 4 سال از عمرتان را در دانشگاه بگذرانید .این کار به شما دسترسی Ù…ÛŒ دهد به شغل هایی Ú©Ù‡ نیاز به این اعتبار دارند ØŒ Ùˆ این کار به شما Ùهم عمیقی از این Øوزه Ù…ÛŒ دهد ،اما اگه شما از دانشگاه خوشتان نمی آید شما Ù…ÛŒ تونید تجربه متÙاوتی در کار بدست بیارین.در هر موردی ØŒ آموزش تنها Ùقط با کتاب نمی تونه کاÙÛŒ باشه. Eric Raymond نویسنده "The New Hacker's Dictionary" Ù…ÛŒ گوید : " آموزش علوم کامپیوتر نمی تونه هیچ کسی رو برنامه نویس ØرÙÙ‡ ای بسازه مانند اینکه مطالعه قلمو Ùˆ رنگدانه نمی تونه شما رو نقاش کنه". یکی از بهترین برنامه نویسانی Ú©Ù‡ من تا الان استخدام کردم Ùقط تا دبیرستان درس خوانده بود. اون بزرگترین نرم اÙزار ها رو تولید کرده ØŒ اون گروه Ú¯ÙˆÚ¯Ù„ خودش رو داره Ùˆ انقدر پول در آورد Ú©Ù‡ بتونه کلوپ شبانه خودش رو بخره.
روی یک پروژه با دیگر برنامه نویس ها کار کنید.در بعضی پروژه ها بهترین Ùˆ در بعضی دیگر بد ترین باشید.هنگامی Ú©Ù‡ شما بهترین هستید ØŒ شما امتØان کنید توانایی تون رو برای مدیریت یک پروژه Ùˆ الهام بخش دیگران باشید.هنگامی Ú©Ù‡ شما بد ترین هستید ØŒ یا بگیرید Ú©Ù‡ مدیر چکار Ù…ÛŒ کند ØŒ Ùˆ یاد Ù…ÛŒ گیرید Ú©Ù‡ Ú†Ù‡ چیز را دوست ندارند Ú©Ù‡ انجام بدهند.(چونکه از شما Ù…ÛŒ خوان این کار رو انجام بدین)
بعد از دیگر برنامه نویسان روی پروژه کار کنید.نوشتن برنامه نوشته شده به وسیله دیگران رو درک کنید .ببینید Ú©Ù‡ برنامه نویس اصلی Ú†Ù‡ کاری رو Ù†Ùهمیده Ùˆ انجام نداده Ùˆ شما آنرا کامل کنید. به اینکه چطور برنامه هاتون رو طراØÛŒ کنید Ú©Ù‡ برنامه نویسی Ú©Ù‡ قرار از اون نگهداری کنه کارش آسونتر بشه.
Øداقل نص٠زبان های برنامه نویسی را یاد بگیرید. شامل یک زبان Ú©Ù‡ پشتیبانی کند ویژگی کلاس رو (مانند : c++ , java) ØŒ یک زبان Ú©Ù‡ از ویژگی تابع پشتیبانی کند(مانند ML یا lisp) ØŒ یک زبان Ú©Ù‡ اعلان رو پشتیبانی کنه (Prolog یا C++ templates) ØŒ یک زبان Ú©Ù‡ از coroutines پشتیبانب کنه(Icon یا Scheme) Ùˆ یک زبان برای اینکه از برنامه نویسی موازی پشتیبانی کند (Sisal)
یادتون باشه Ú©Ù‡ ما در "علوم کامپیوتر" با کامپبوتر سروکار داریم.بدانید Ú©Ù‡ چقدر طول Ù…ÛŒ کشد Ú©Ù‡ کامپیوتر شما دستورالعمل رو اجرا کنه ØŒ یک کلمه رو از ØاÙظه برداره (با ØاÙظه Ú©Ø´ Ùˆ بدون آن) ØŒ کلمات پشت سر هم رو از هار بخونه ØŒ یا به یک مکان جدید روی هارد بره.
تلاش کنید Ú©Ù‡ یک زبان رو استاندارد کنید. اون Ù…ÛŒ تونه کمیسیون ANSI C++‎ باشه یا Ù…ÛŒ توانید کد نویسی خودتون رو استاندارد کنید مانند تعداد Ùرو رÙتگی ها . در هر صورت شما یاد میگیرید Ú©Ù‡ مردم Ú†Ù‡ چیز هایی رو در یک زبان دوست دارند ØŒ Ú†Ù‡ مقدار این Øس رو دارند Ùˆ در نهایت اینکه Øتی ممکنه مقداری هم درباره اینکه چرا آنها این Øس رو دارند.
تلاش کردن برای پیاده سازی استاندارد در یک زبان در سریع ترین زمان اØساس خوبی داره.
با توجه به تمام این مسائل ØŒ این سوال به وجود میاد Ú©Ù‡ شما Ùقط با کتاب تا Ú†Ù‡ Øد Ù…ÛŒ تونید یاد بگیرید.قبل از به دنیا اومدن اولین بچه ام ØŒ همه کتاب های "چگونه Ù…ÛŒ توان ..." رو خونده بودم ØŒ هنوز اØساس Ù…ÛŒ کردم یک تازه کارم. 30 ماه بعد ØŒ هنگامی Ú©Ù‡ بچه ÛŒ دوم من به دنیا آمد ØŒ آیا من به کتاب های تازه تر بر Ù…ÛŒ گشتم ØŸ خیر . به جای آن من به تجربه شخصیم تکیه Ù…ÛŒ کردم.به عقیده من تجربه شخصی ام Ù…Ùید تر Ùˆ کامل تر از هزاران صÙØÙ‡ از نوشته های کارشناسان است.
Fred Brooks در مقاله خود به نام " No Silver Bullet" برنامه ای سه بخشی برای شناسایی طراØان بزرگ نرم اÙزار Ø·Ø±Ø Ù…ÛŒ کند :
با روش سیستمی بهترین طراØان نرم اÙزار رو پیدا کنید.
یک مربی ØرÙÙ‡ ای مسئول توسعه چشم انداز اختصاص بدهید.
Ùرصتی به وجود بیارن تا طراØان با یکدیگر در ارتباط باشند Ùˆ در صدد تØریک هم بر آیند.
بر این Ùرض است Ú©Ù‡ بعض از مردم ویژگی هایی Ú©Ù‡ نیاز است تا Ø·Ø±Ø§Ø Ø¨Ø²Ø±Ú¯ÛŒ شوند را دارند;کار اینه Ú©Ù‡ اون ها رو کنار هم به درستی قرار داد.
Alan Perlis به صورته علمی تر Ù…ÛŒ گوید : " همه Ù…ÛŒ تونن به Øجاری آموزش داده شوند ØŒ Michelangelo باید یاد میگرÙت Ú©Ù‡ چطور این کار رو انجام نده. پس باید برنامه نویسان هم همین طور است."
همچنین Alan Perlis گقت : "بعضی نوابغ ØŒ ویژگی داخلی شان Ùراتر از آموزش آنهاست." اما این ویژگی از کجا میاد ØŸ ذاتی است ØŸ یا اینکه آنها با سعی Ùˆ تلاش آنرا توسعه Ù…ÛŒ دهند؟ "همه Ù…ÛŒ تونن برنامه نویس بشند اما اونی بزرگ میشه Ú©Ù‡ بی باک باشه."
Anton Ego می گوید : " همه نمی تونن بازیگری بزرگ بشند ، اما یک بازیگر بزرگ می تون از هر جایی بیاد."
پس برین Ùˆ کتاب های Java/Ruby/**********/PHP Ùˆ غیره رو بخرید ; اØتمالا شما Ú©Ù…ÛŒ از آنها استÙاده کنید. اما شما نمی تونید زندگی تون رو عوض کنید ØŒ یا تخصص Ú©Ù„ واقعی ØرÙÙ‡ ای تون رو در برنامه نویس رو در 24 ساعت ØŒ روز یا Øتی در یک Ù‡Ùته .Ú†Ú¯.نه است Ú©Ù‡ بیشتر از 24 ماه به صورته مستمر Ùˆ سخت کار کنید برای بهبود بخشیدن آن ØŸ خوب شما شروع Ù…ÛŒ کنید به گرÙتن جایی ...
اجرای دستور معمولی
1/1,000,000,000 sec = 1 nanosec
واکشی از ØاÙظه Ú©Ø´ L1
0.5 nanosec
شاخه misprediction
5 nanosec
واکشی از ØاÙظه Ú©Ø´ L2
7 nanosec
mutex Ù‚ÙÙ„ / باز کردن
25 nanosec
واکشی از ØاÙظه اصلی
100 nanosec
ارسال 2 kb روی شبکه 1Gbps
20,000 nanosec
خواندن Ù¾ÛŒ در Ù¾ÛŒ 1MB از ØاÙظه
250,000 nanosec
واکشی از Ù…ØÙ„ دیسک جدید (seek)
8,000,000 nanosec
خواندن پی در پی 1MB از دیسک 20,000,000 nanosec
ارسال اطلاعات آمریکا به اروپا و برگشت
150 milliseconds = 150,000,000 nanosec
ضمیمه : انتخاب زبان برنامه نویسی
چند Ù†Ùر از من پرسیده اند Ú©Ù‡ Ú†Ù‡ زبان برنامه نویسی ای رو برای شروع برنامه نویسی انتخاب کنند.یک پاسخ قطعی وجود ندارد ØŒ اما نکات زیر را مد نظر داشته باشید:
از دوست تان استÙاده کنید . هنگامی Ú©Ù‡ میپرسه : " از Ú†Ù‡ سیستم عاملی استÙاده کنم ØŒ ویندوز ØŒ لینوکس یا Ù…Ú© ØŸ" ØŒ معمولا پاسخ من این است : " از هر چیزی Ú©Ù‡ دوستت استÙاده Ù…ÛŒ کنه استÙاده Ú©Ù†" با این کار از مزیت یادگیری از دوستت استÙاده Ù…ÛŒ Ú©Ù†ÛŒ ØŒ با این کار Ùرق بین همه سیستم عامل ها Ùˆ زبان های برنامه نویسی رو کنار خواهید گذاشت.همچنین دوستان آینده خود را در نظر بگیرید : شما بخشی از جامعه برنامه نویسان خواهید بود اگر ادامه بدهید.زبان مورد انتخاب شما دارای جامعه دارای رشد است یا در Øال مرگ ؟آیا کتاب ØŒ وب سایت ØŒ انجمن آنلاین برای دریاÙت پاسخ وجود دارد ØŸ آیا مردم داخله این انجمن را دوست دارید ØŸ
ساده نگهش دار .زبان های برنامه نویسی مانند c++ ,java برای پروژه های بزرگ طراØÛŒ شده اند Ú© توسعه دهندگان به وسیله تیم های بزرگ با تجربه از آن استÙاده Ù…ÛŒ شود Ú©Ù‡ بهروه وری زمان اجرا برایشان مهم است.در نتیجه این زبان برای این شرایط طراØÛŒ شده است.شما نیاز ندارید از این زبان استÙاده کنید زیرا قصد شما یادگیری برنامه نویسی است.شما به پیچیدگی نیازی ندارید.شما یک زبان برنامه نویسی را Ù…ÛŒ خواهید Ú©Ù‡ برای آموزش آسان برنامه نویسی طراØÛŒ شده باشد Ùˆ در یاد یک برنامه نویس جدید بماند.
کدام راه را برای یادگیرÙتن پیانو Ù…ÛŒ پسندید : راه اول اینکه پس از Ùشار دادن هر کلید پیانو صدای نت را Ù…ÛŒ شنوید یا اینکه بعد از Ùشار دادن همه کلید ها صدا را بشنوید ØŸ معلوم است ØŒ شما راه تعاملی را بیشتر Ù…ÛŒ پسندید.توصیه Ù…ÛŒ کنیم Ú©Ù‡ از یک زبان برنامه نویسی تعاملی استÙاده کنید.
توصیه من این است Ú©Ù‡ شما از Python یا Scheme استÙاده کنید.اما شرایط شما ممکن است متÙاوت باشد ØŒ Ùˆ دیگر انتخاب های خوبی وجود داشته باشد. اگر سن شما تک رقمی باشد، شما ممکن Alice یا Squeak (زبان آموزان مسن تر ممکن است این لذت بردن) را ØªØ±Ø¬ÛŒØ Ù…ÛŒ دهند. نکته مهم این است Ú©Ù‡ شما را انتخاب کنید Ùˆ شروع کنید.
نکته : به دلیل قدیمی بودن مقاله اصلی ممکن است بعضی زبان های نام برده شده دیگر کاربرد نداشته باشند.
مترجم : سید اØمد الهی
ایمیل : [email protected]
سایت مترجم : www.progforum.ir