یادگیری برنامه نویسی
pubdate: after 1992 and title: days and
(title: learn or title: teach yourself)
و ٢٤٨ كتاب پيدا شد!!!!٧٨ تاي اول مربوط به كامپيوتر بودند و شماره ٧٩ يادگيري روسي در ٣٠ روز بود.بعد days رو با hours جا به جا كردم و ... ٢٥٣ مورد ديگر!!! ٧٧ مورد اول كامپيوتري بود و شماره ٧٨ م يادگيري قالب ها در ٢٤ ساعت بود. از ٢٠٠ كتاب اول ٩٦٪ كامپيوتري بودند!!!اين يعني چي؟ يعني مردم يا خيلي عجله دارند يا اينكه كامپيوتر ها خيلي راحت تر از موارد ديگر هستند.هيچ كتابي در مورد موسيقي يا فيزيك كوانتوم و يا حتي سگ ها در اين زمان ها نيست!Felleisen يك مقدمه جالب در كتاب طراحي برنامه هايش داده و آن اين است" برنامه نويسي بد راحت است ، احمق ها هم مي توانند آن را در ٢١ روز يادبگيرند، حتي اگر ابله باشند".(منظور اين است كه با تلاش مي توان برنامه نويسي رو تو حداكثر ٢١ روز يادگرفت ولي به درد ... هم نميخوره!)
بيايد بررسي كنيم تيتر يادگرفتن C++ در سه روز به چه معناست:
يادگيري:در ٣ روز شما وقت كافي براي نوشتن برنامه هاي اساسي نداريد و هم چنين قدرت آزمون و خطا از شما گرفته مي شود. شما حتي وقت صحبت با يك حرفه اي را نداريد تا درك كنيد زندگي در C++ چيست. حتي زمان تست كردن همه اديتور ها و كامپايلر ها براي انتخاب بهترينشان را نداريد. در كوتاه مدت، شما خيلي ياد نمي گيريد. پس كتاب در مورد يك سري كليات است، و نه جزئياتي عميق و مفهومي. به قول Alexander Pope" يادگيري كم خطرناك است!"
C++:در ٣ روز شما ممكنه بعضي از دستورات c++ را ياد بگيريد(اگر قبلاً زباني را بلد باشيد)، ولي شما ياد نمي گيريد چگونه از زبان استفاده كنيد.در كوتاه مدت ، اگر شما -تازه كار- باشيد شما مي توانيد برنامه هاي ساده اي با c++ بنويسيد ولي شما نمي توانيد درك كنيد c++ چرا خوب يا بد است. پس هدف چيست؟ يكبار از Alan Perlis شنيدم :"زباني كه به نحوه تفكر شما درباره برنامه نويسي تاثير نمي گذارد، ارزش يادگيري ندارد".يك دليل قابل دسترسي اينه كه شما مي خواهيد قسمتي از C++ (يا flash's flex يا JavaScript) را ياد بگيريد ، براي رسيدن به هدفي خاص(مانند امتحان!!!) اما آن وقت شما ياد نمي گيريد چگونه برنامه نويسي كنيد؛ شما ياد مي گيريد آن هدف را به پايان برسانيد.
در ٣ روز:متاسفانه، اين كافي نيست، همانطوري كه در ادامه خواهيد ديد.
به خودتان برنامه نويسي را در ١٠ سال ياد دهيد.
محققان(Bloom(1985), Bryan & Harter (1899), Hayes(1989), Simmon & Chase(1973)) نشان داده اند حدود ١٠ سال طول مي كشد تا به درجه حرفه اي در هر موضوع وسيعي برسيد. مانند شطرنج، موسيقي، تلگراف، نقاشي، شنا، تنيس، نانو و حتي برنامه نويسي!كليد يادگيري اين است: تلاش ، نه هزار بار نوشتن برنامه Hello World بلكه تمرين كردن برنامه هاي جديد، كه بيشتر از دانش و توانايي شما نياز به دانش و توانايي دارند! تلاش كنيد، پيشرفت و عملكرد خود را بعد و زمان انجام كار بسنجيد، اشتباهات را جبران كنيد. سپس تكرار كنيد. دوباره تكرار كنيد. به نظر ميرسه هيچ راه كوتاه تري نيست: حتي موتزارت، كه در ٤ سالگي نابغه اي در موسيقي بود، ١٣ سال تمرين كرد تا اولين موسيقي جهاني اش را عرضه كند.در ژانري ديگر بيتلز كه به نظر ميرسد رتبه اول گروه هاي موسيقي را از اول داشته اند، براي اولين بار در سال١٩٦٤ (اولين اجراي معروفشان) ساز به دست نگرفتند، بلكه از سال ١٩٥٧ در رستوران هاي كوچك مي نواختند.و حتي پس از آن اولين آلبوم معروف آن ها (Sgt. peppers) در سال ١٩٦٧ عرضه شد.
Malcolm Gladwell گزارش مي كند كه در يك تحقيق از دانش آموزان در آكادمي موسيقي برلين از بين ضعيفان و متوسطان و قويان پرسيده شد چقدر تمرين مي كنيد:
همه از هر ٣ گروه از حدود ٥ سالگي شروع به نواختن كردند.در چند ساله اول همه به يك اندازه تمرين مي كردند-٢ يا ٣ ساعت در هفته. نزديك به ٨ سالگي تفاوت آغاز مي شود: بهترين ها بيشتر از بقيه تمرين مي كردند:٦ ساعت در هفته در ٩ سالگي. ٨ در ١٢ سالگي . ١٦ در ١٤ سالگي و بيشتر و بيشتر و بيشتر تا در ٢٠ سالگي بيش از ٣٠ ساعت در هفته .بهترين ها در ٢٠ سالگي حدود ١٠هزار ساعت تمرين كرده بودند، متوسط ها ٨ هزار و ضعيف ها ٤ هزار.
پس اين ١٠ سال نيست، ١٠هزار ساعت است.Cartier-Bresson گفته "١٠ هزار عكس اول شما افتضاح ترين هايتان است".Samuel Johnson حتي بيش از اين فكر مي كند"حرفه اي شدن در هر زمينه يك عمر طول مي كشد، تخفيفي در كار نيست"و Chaucer گفته"زندگي كوتاه است، سازه بلند"
و يا كاملتر بگويم "زندگي كوتاه است، سازه بلند، شانس زودگذر است، تجربه آموزنده است،قضاوت سخت"
پس مي خواهيد برنامه نويس شويد
دستور پخت يك برنامه نويس:
به برنامه نويسي علافه مند شويد، تا برايتان جالب شود.مطمئن شويد آنقدري جالب است كه در ١٠ سالتان ١٠ هزار ساعت قرار دهيد.
برنامه نويسي كنيد. بهترين روش يادگيري انجام دادن آن است.
با بقيه برنامه نويسان صحبت كنيد، كد هايشان را بخوانيد.اين از هر كتابي مهم تر است.
كلاس برداريد.كتاب لازمه يادگيري است اما كافي نيست. اين مرحله ضروري نيست اما بهتر است انجام شود زيرا انسان ها دوست هاي بهتري نسبت به كتاب ها هستند.Eric Raymond نويسنده ديكشنري جديد هكر ها مي گويد "تحصيل cs(computer science)همانند يك قلم مو و جوهر عمل مي كنند، براي حرفه اي كردن"(تاثير چنداني ندارد!!). بهترين برنامه نويسي كه ديده ام ديپلم هم نداشت(!) اما آنقدر درآمد داشت كه در ٢٠ سالگي مي توانست كلوپ شبانه خودش را افتتاح كند.
روي پروژه ها با بقيه كار كنيد.در بعضي از پروژه ها بهترين برنامه نويس باشيد، براي يادگيري مديريت. در بعضي بدترين باشيد براي يادگيري برنامه نويسي!
روي پروژه هاي تكراري دوباره كار كنيد.برنامه اي كه توسط كسي ديگر نوشته شده را درك كنيد.كد هاي قبلي را تغيير دهيد تا بيشتر ياد بگيريد.
حداقل نيم جين زبان يادبگيريد!شامل يك زبان كه class را پشتيباني كند(c++,java,...) يك زبان كه از تابع پشتيباني كند (Lisp,Ml,...) زباني كه از ساختار ها استفاده كند(prolog,C++template,...) زباني كه از تقارن استفاده كند(sisal,...).
به ياد داشته باشيد در cs يك كامپيوتر وجود دارد، بدانيد چقدر طول مي كشد تا يك كلمه از حافظه خوانده شود، يك برنامه اجرا شودو... .
استاندارد برنامه نويسي كنيد تا راحت تر جواب مشكلاتتان را بگيريد.


