چرا همه برای یاد گیری برنامه نویسی عجله دارند ؟
داخله هر کتاب ÙØ±ÙˆØ´ÛŒ ای Ú©Ù‡ برین Ú©Ù„ÛŒ کتاب هست با عنوان های یاد گیری برنامه نویسی در 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