چهار شنبه ها با امنیت ۱

روش های حفظ امنیت تلفن همراه در دوران پسا تلگرام :

از چند که خبر فیلترینگ تلگرام بر روی خبر گذاری ها مخابره شد و واکنش های مختلفی در بر داشت ، تصمیم گرفتم که مجموعه چهارشنبه ها با امنیت که قبلا گفته بودم با همین ایده شروع کنم .

[امنیت موبایل]

این روزها که نظرات مختلف درباره امکان و عدم امکان فیلترینگ تلگرام مطرح میشه که گاها میتونن نظرات غیر واقعی و یا نادرست باشن . پس لازمه که حتما از منبع انتشار هر خبری در این رابطه اول مطمئن بشین .

در ادامه لازمه که به موارد زیر توجه کنین :

    • از هر منبعی فیلترشکن دانلود نکنید :

این روزها به دلیل نبود منبعی درست و یا عدم آگاهی های لازم مردم این امکان برای افراد سودجو و بعضا حکومت پدید اومده که با انتشار بد  افزارهایی در قالب فیلترشکن ، تلگرام بدون فیلتر ، برنامه های مشابه تلگرام مثل موبوگرام ، نارنجی گرام و … ، توانایی شنود و دسترسی به اطلاعات موجود بر روی تلفن همراه شما فراهم بشه .

  • سطح دسترسی برنامه های نصب شده بر روی گوشی  خود را بازنگری کنید :

هر برنامه قبل از نصب شدن برروی سیستم عامل تلفن همراه بسته به نیاز خود امکان دسترسی به یک یا چند منابع موجود بر روی تلفن همراه مانند ، موقعیت یاب تلفن (GPS و Location) ، استفاده از دوربین تلفن همراه ، دسترسی به لیست مخاطبین و … درخواست میکند . این امر باتوجه به کارکرد نرم افزار متفاوت است . برای مثال تلگرام باتوجه به سازوکارش نیاز به دسترسی به لیست مخاطبین شما را دارد .

[اخیرا ، گزارش هایی مشاهده شده از اپلیکیشن موبایل بانک قوامین که پس از بروز رسانی به آخرین نسخه درخواست دسترسی به لیست مخاطبین ، گالری ، موقعیت گوشی را دارد و در صورت عدم اجازه برنامه دیگر کار نخواهد کرد .]

  • در انتخاب پیام رسان جایگزین دقت کنید :

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

  • پیام رسان جایگزین از سیستم رمزگزاری end – to – end برای تامین امنیت استفاده کند .  سیستم رمزگذاری «end-to-end» پیام‌ فرستنده را در مبدا رمزگذاری می‌کند به طوری که فقط کاربر دریافت‌کننده می‌تواند آن را رمزگشایی کند. در این صورت کسی جز فرستنده و گیرنده به محتوای پیام‌ دسترسی نخواهد داشت. همچنین در این سیستم رمزگذاری، پیام‌ها به هیچ عنوان روی سرور‌ها ذخیره نمی‌شود، بلکه فقط در دستگاه فرستنده و گیرنده ذخیره می‌شود.
  • (این نکته لزوما دلیلی بر تایید و یا تکذیب نیست من نیست  ) ، نکته دیگر این‌که برخی پیام‌رسان‌های داخلی اجازه برخی فعالیت‌ها را به شما نمی‌دهند؛ مثلا با این ابزارها نمی‌توانید در کانال‌های خبری خارج از ایران عضو شوید یا اگر در آن‌ها عضو بوده‌اید به محض استفاده از این پیام‌رسان‌ها به صورت اتوماتیک از کانال خارج می‌شوید. همچنین این اپلیکیشن‌ها شما را در برخی کانال‌های داخلی عضو می‌کند و اجازه خروج هم به شما نمی‌دهد؛ این یعنی دخالت آشکار در حریم خصوصی شما.
  • اگر در فضاهای مجازی فعالیت‌های خاصی انجام می‌دهید به این مسئله بسیار دقت کنید؛ چرا که دسترسی دیگران به اطلاعات و محتوای اپلیکیشن‌های ارتباطی شما بسیار خطرناک است و ممکن است برای‌تان دردسرساز شود.

در نهایت :

من در مقام مسئولی نیستم که قادر به اظهار نظر در رابطه با خوب یا بد بودن فیلتر دن تلگرام باشم ، اما چیزی که برام مهمه آموزش . آموزش اینکه در دنیای اینترنت هیچ کس به اندازه خومون توانایی محافظت از خودمون نداره .

در جامعه ای که ظرفیت نقد پذیری درونش به قدری پایین که حکومت حاضر شده خسارت های ناشی از فیلترینگ پرداخت کنه اما توانایی حل مشکلات مهم تر از قبیل آب و … نداره پس خیلی هم نباید به تبلیغاتش برای استفاده از هر چیزی اهمیت داد. 

لینک های بیشتر :

لینکستان : با موضوع امنیت 
هاون ، ابزار نظارت شخصی
احتیاط شرط عقله ؟
امین ثابتی : یکشنبه ها با امنیت دیجیتال 
چرا جایگزین‌های تلگرام ناامن و غیرقابل اعتمادند؟

 

 

 

 

خوندن کد به چه شرطی

قبلا راجع به چرایی عدم توانایی نوشتن یک کد ساده نوشته بودم  . در ادامه اون اینبار به یک مرحله جلوتر میخوام بیام و راجع به نیاز ها و عادت ها بگم .

یک ماجرای قدیمی هست که میگه : رابطه بین برنامه نویس ها با غیر برنامه نویس ها توی اینه که برنامه نویس ها دیگران رو کسایی میبینن که هیچ درکی از حرفاشون که در قالب کد نوشته میشه ندارن و در کنار اون دیگران هم برنامه نویس هارو کسایی میبینن که اصلا اهل این دنیا نیستند .

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

این قضیه برای هر تجارتی قابل قبول نیست ، پس راه حل های مختلفی بوجود اومد . این راه حل ها همون استاندارد های مختلف برنامه نویسی اند مثل نوشتن توابع که بازم فقط خاص خود برنامه نویس هاست پس برای افراد عادی چی ؟

مستند سازی و نوشتن کامنت :

تصور کنین که شما به عنوان برنامه نویس برای یک شرکت استخدام شدین و قرار قسمتی از بیزینس اونها به کمک شما جلو بره . اول از همه باید بتونید با پروژه ای که قرار کمک به پیشرفتش کنید ارتباط برقرار کنید .

توی دنیای پر سرعت امروز این امکان وجود نداره که افراد تیم برنامه نویس بخواد به شما درباره کد های نوشته شده توضیح بده پس باید بتونید خودتون بخونین .

درسته که درک کدهای نوشته شده قبلی توسط شما از مهارت های برنامه نویسی به حساب میاد اما سرعت درک هم پارامتری که نباید فراموشش کرد ، پس نیاز به نوشتن کامنت اینجاست که بوجود میاد.

از طرفی تصور کنید که رئیستون از شما میخواد که پروژه ای که نوشتین و براش توضیح بدین و اون هم میخواد که توضیحات شما رو برای روسای بالا دستیش توصیح بده ، راه حل چیه ؟

شما باید بتونید همون کامنت هایی که نوشته شده قبلا داخل پروژه و یا خودتون برای خوانایی بهتر به پروژه اضافه کردین در قالب یک فایل نوشتاری آماده کنید و اونو به مدیریتون تخویل بدین . مستند سازی علاوه بر اینکه توانایی شما رو در ارائه جربیاتتون افزایش میده بهتون کمک میکنه که در صورتی که جایی در طول پروژه به مشکل برخوردین اونو به سرعت برطرف کنید .

یادتون باشه :

  • برای نوشتن کامنت : قرار نیست چیزه پیچیده ای بنویسین ، فقط کافیه که دستوراتی که در قالب کد نوشتین بصورت متن برای خودتون بنویستن تا نفر بعدی که کد شما رو میخونه هر چقدر هم که خنگ باشه و یا سر رشته ای از کدنویسی نداشته باشه ، بتونه کد شما رو بخونه و درک کنه .
  • برای مستند سازی : هم به همین صورت قرار نیست که شما چیزی پیچیده ای بنویسین ، فقط کافی که کامنت هایی که نوشتین و بصورت دسته بندی و مرتب در قالب یک فایل نوشتاری آماده کنید ، در ضمن یادتون باشه که برای مسند سازی هرچی که به جزییات اهمیت بدین مستندی که آماده می کنید کاربردی تره .

نتیجه گیری :

به عنوان یک برنامه نویس تازه کار تلاشتون بکنید که حتما مهارت نوشتن کامنت و مستند سازی درون خودتون ایجاد و تقویت کنید . توی دنیای برنامه نویسی درسته که ، کسی که بیشترین توانایی در رابطه با استفاده از تکنولوژی های جدید تر داشته باشه [ به زبون ساده تر ، کسی که بتونه خودشو با تکنولوژی های جدید تر سریع تر تطبیق بده ] موفق تره اما نباید فراموش کرد که بعضی از کارها جز صفات برنامه نویس های موفقه نه تواناییشون .

 

 

 

دیدباز یا متن باز فرقی نمیکنه مهم اطمینان و ریسک پذیریه

اگر از یه خوره کامپیوتر بپرسین دنیا به چند بخش تقسیم میشه احتمالا جوابی که می‌شنوین اینه که ،دنیا به دو بخش متن باز و بسته تقسیم میشه ساده ترش مبشه لینوکس و ویندوز .

این چیزه درستی که نرم افزار جز لاینفکی توی زندگی امروز به حساب می‌آید و بیشتر سخت افزاری که ما توی زندگی ازشون استفاده میکنیم با یه نرم افزار کار میکنن.

وقتی میگیم سخت افزار لزوما کیس و بصورت سنتی تر کامپیوتر های رو میزی نیست ، سخت افزار میشه هر چیزی از جاروبرقی ، ماشین ریش تراش که ساده ترینان تا ماشین های توی خیابون همشون به نوعی از نرم افزار دارن استفاده میکنم.

به نوعی بهتر بگیم که صنعت نرم افزار صرف زمانی کارکرد داره که با صنایع دیگه گره خورده باشه . امروز توی مترو با اتفاقی مواجه شدم که شاید بامزه به نظر میاد اما نشون از عمق فاجعه داره .

[دیدباز یا متن باز فرقی نمیکنه مهم اطمینان و ریسک پذیریه]

دستگاه کارتخوانی که مسافرین مترو ازش استفاده میکنند از یک سیستم عامل ویندوزی استفاده میکنه که دچار مشکل شده . شاید در ابتدا قضیه بامزه باشه چون نمونه های زیادی توی دنیا از این دست اتفاق افتاده و تقریبا دیگه عادی داره میشه .

اما قسمت فاجعه بار قضیه اینجاست که جدای از اینکه هزینه خرید و راه اندازی همچین دستگاهی چقدره و از کجا و چطوری داره تامین میشه ، اینکه چرا در ساده ترین و پیش پا افتاده ترین ابزار های مورد استفاده توی جامعه ما هم باید از یک ابزار بسته اسفاده بشه .

شاید لازم باشه که در بعضی موارد خاص از ویندوز هم استفاده بشه یا اصلا نیاز سازمان به شکلی طراحی شده که حتما با ویندوز حل میشه اما نکته ای که نباید فراموشش کرد اینه که ؛ تا من به عنوان کارفرما نخوام از محصولی که دارم ازش استفاده میکنم به درستی استفاده کنم تا در موقع لزوم  منو منتظر نزاره شاهده تکرار این ماجرا هستیم .

اطمینان و قدرت ریسک پذیری که کمک میکنه مشکلی مثل بالا پیش نیاد . من کارفرما باید اطمینانم و به روش های جدید بالا ببرم و در کنار اون قدرت ریسک پذیریمو افزایش بدم تا بتونم اطمینانی که دارمو به کار بگیرم .

نباید فراموش کرد که ، این دوتا یعنی اطمینان و ریسک پذیری باهمن که معنی پیدا میکنن . 

راه حل  :

همونطور که اول گفتم ، تقریبا هر گیک کامپیوتری با برد رزپری-پای آشنایی داره . (یک رایانه تک-برد  در اندازه یک کارت اعتباری است کهبنیاد رزبری پای آن را ساخته است تا آموزش علوم رایانه را در مدرسه‌ها تشویق کند. )

با کمک رزپری – پای میشه همین دستگاه و ساخت با کمنرین هزینه ممکن اما نکته اینچاست که به جای ویندوز میشه از لینوکس استفاده کرد و دیگه به همچین مشکلی برنحورد .

من اصلا هدفم کوبیدن ویندوز و بالا بردن لینوکس به عنوان دو سیستم عامل نیست ، نه بلکه میخوام بگم توی این روزها که سرعت در ارائه سرویس داره جرف اول میزنه چرا ما بهش توجهی نمیکنیم .

اگه مشکل هزینه است که با تغییر ساختار میشه هزینه رو به حداقل رسوند ، اگه نبود نیروی سازنده و متخصص که اگر قدرت اطمینان و ریسک پذیری مونو افزایش بدیم این مشکل هم حل میشه .

 پ ن :

اروری که در بالا میبینید این جمله است :

مشکلی غیر منتظره ای اتفاق افتاده برای ویندوز ، حال با زدن دکمه quit سیستم عامل را ریستارت کنید و یا با زدن دکمه detail جزییات این اتفاق را مشاهده کنید (:

چرا نباید عضوی از یک رویداد بود ؟

چرا نباید عضوی از یک رویداد بود ؟ احتمالا با دیدن این سوال از خودتون پرسیدین که یعنی چی ؟ بزارین بیشتر توضیح بدم :

با یک بررسی اجمالی توی تقویم و خبرگذاری های رسمی در طول یک سال شاهد برگزاری هزاران رویداد ، همایش ، جشنواره و … هستین که برای هر مناسبتی داره اجرا میشه .

از رویدادهایی که دیگه برامون عادی شدن تا اونایی که واقعا هدف از برگزاریشون سوال برانگیزه . چیزی که هست ، اینکه چرا نباید عضوی از یک رویداد بود ؟

جواب این سوال توی یک کلمه خلاصه میشه ؛

مدیریت :

اصولا از رویداد های داخلی که به هر مناسبتی برگزار میکنیم تا رویدادهای بین المللی که با هزار مکافات مجوز برگزاری اونو داخل کشور میگیریم بعد به یکی از هزارتا دلیل خط قرمز یا اونو کنسلش میکنیم یا برگزار کننده رو مجبور به تغییر دادن اصل ماجرا میکنیم مدیریت درست در نحو برگزاری چیزی که اصلا رعایت نمیشه .

[راستی اصلا ما چرا انقدر خط قرمز داریم ؟] من اخیرا بصورت داوطلبانه توی یکی از همین رویداد ها شرکت کردم .از اونجایی که این بچه هایی این رویداد رو اجرا میکردن همه از دوستانم هستن چنتا نقد داشتم که دیدم نسبت به اکثر رویدادهایی که داریم برگزار میکنیم هم ربط داره پس بدون آوردن اسم اینجا نظراتمو مینویسم ، امیدوارم مفید باشه . 

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

نه در یک رویداد بلکه در هر کار حضور مدیر بالا دستی در کنار نیروی تحت امر باعث جذب بیشتر نیرو به مجموعه و در نتیجه باعث پیشرفت خود مجموعه و سود بیشتر میشه .

  • کار تیمی : کارتیمی چیزی که ما اصلا بلد نیستیم ، اصولا یک رویداد که داییه بهبود فرهنگ داره باید در جزئی ترین مسائل هم به دنبال تقویت فرهنگ باشه . تقویت فرهنگ کار تیمی میتونه نقطه خوبی برای شروع باشه .

چرا من نمیتونم حتی یک کد ساده بنویسم؟

به عنوان کسی که فکر میکنه تا حدودی برنامه نویسی میدونه ، یکی از عمده مشکلاتی که در ابتدای باهاش روبرو بودم میخوام با شما به اشتراک بزارم .
اکثر بچه های کامپیوتر خصوصا نرم افزاری ها که تازه از دانشگاه شروع میکنند
به کد نویسی کردن به یه مشکل خیلی بزرگ مواجه میشن ،

چرا من نمیتونم حتی یک کد ساده بنویسم؟

وقتی پای حرف بچه های کامپیوتری بشینید معمولا چنتا جمله رو زیاد میشنوید :

  • من اصول اولیه رو سرکلاس یاد گرفتم پس چرا نمیتونم  یه برنامه بنویسم ؟
  • من تئوری ها رو بلدم اما نمیتونم از اونها توی کد استفاده کنم ؟
  • من حلقه ها رو میشناسم اما نمیدونم کی باید از اونخا توی کد هام استفاده کنم ؟
  • ….

[در بین این سه تا ، سوال اول از همه بیشتر معروف شده ]

وقتی که دانشجو ها سر کلاس در حال یاد گیری یک زبان برنامه نویسی هستند و یا
اونهایی که تسلط بیشتری دارند و شروع به خوندن کتاب های مرجع میکنند همه این
موارد به دانشجو امکان پیشرفت میده یا حتی در مواقعی دقیقا میگند که چه چیزی و
دانشجو باید تایپ کنه اما وقتی که دانشجو بخواد خود یک برنامه رو تایپ کنه مسلما
احساس ضعف میکنه چون دیگه هیچ اشاره و یا راهنمایی وجود نداره که بخواد از اون
استفاده کنه .

نتیجه راهنمایی بیش از حد این میشه که دانشجو سینتکس(syntax) برنامه رو بدون
یادگرفتن مفاهیم برنامه نویسی یاد میگیره.سینتکس متنیه که شما برای یک زبان
برنامه نویسی خاص اونو مینویسید و اینکه سینتکس برای هر زبان برنامه نویسی
متفاوته .چیزی که شما واقعا بهش نیاز دارید دونستن مفاهیمی مثل ، حلقه ها
تکرار ، ارث بری و … . مفاهیم به شما اجازه میدند که کد واقعی بنویسید . وقتی
کسی میگه که در مورد مثلا حلقه های بلده اما نمیدونه کی باید از اونها استفاده کنه
، به این معنی که سینتکس (نحو) بلده اما اصلا مفهوم تکرار و درک نمیکنه .

من نمی گم که راهنمایی بده ! وقتی که شما شروع به یادگیری میکنید، قطعا نیاز
به کسی دارین که در طول مسیر هدایتون کنه. با این حال، دریافت راهنمایی
بیش از حد به عنوان یک مبتدی می تونه به شما تصور اشتباه بده که برنامه نویسی
خیلی کاره راحتیه و این بسیار نا امیدکننده می شیه زمانی که دانشجو نمی تونه
یک برنامه به تنهایی بنویسه.

حرف های واقعی :

این قسمت مقاله میخوام یکم از طعم واقعی این عشق براتون بگم پس خودتون رو
آماده کنید .اگر حس میکنید که مفاهیم و بلد هستید اما نمیتونید بدون راهنمایی یه
برنامه ساده بنویسید ، از این میترسم که احتمالا اصول اولیه رو درک نمیکنید .
شما روی لبه ای که مدرسه واکینگ کد بهش میگه صحره سردرگمی وایستادید :

درک دردناکیست وقتی که آموزش ها به پایان میرسد و دانشجو
احساس میکند که هنوز توانایی لازم برای مستقل عمل کردن را ندارد.
چالش اصلی پیش رو در اشکال زدایی است نه حل کردن درست مسئله

نکته: یک محیط برنامه نویسی واقعی ایجاد کنین :

حالا وقتش رسیده تا یه محیط برنامه نویسی واقعی نصب و پیکر بندی کنین.
هر زبان برنامه نویسی نیاز به یک محیط متفاوت داره.

اول، شما نیاز به یک ویرایشگر متن یا IDE (محیط توسعه یکپارچه) دارین.
محبوبترین ویرایشگر متن که ویژه زبان برنامه نویسی ایست که درحال یادگیری
اون هستید ، پیدا و نصب کنین .
در مرحله دوم، شما باید چگونگی اجرای یک فایل حاوی کد را یادبگیرین.

اگر از یک IDE به عنوان ویرایشگر متن خود مثل Visual Studio، Xcode یا Eclipse
استفاده می کنید، این قابلیت (مرحله دوم )در IDE وجود داره.

اگر شما از IDE استفاده نمی کنین، احتمالا باید یاد بگیرین چطور کد خودتونو رو از
خط فرمان اجرا کنین. به دنبال دستورالعمل “شروع به کار” برای زبان برنامه نویسی
خودتان برین و همچنین در YouTube برای فیلمهای آموزشی که می تونید اونها رو
دنبال کنین و بررسی کنین.

وقتیکه تونستین کد رو وارد کنین، اونرو در یک فایل ذخیره کنین، و فایل رو اجرا کنین، بعد برنامه شما آماده برای اجراست. برنامه نویسای حرفه ای هر روز به این صورت عمل میکنن.

نکته: برنامه ها را از ابتدا بسازین:

شما باید شروع به نوشتن کد خود بدون دستورالعمل کنین . با یک فایل خالی شروع کنین
و هر خط کد خود را تایپ کنین.

این در ابتدا بسیار دشواره . وقت زیادی برای اشکال زدای صرف می کنین و سعی می کنین پیام های خطا را درک کنین، اما این یک نکتست. هر بار که شما مشفول بررسی و رفع یک خطا هستین، تجربه واقعی برنامه نویسی را بدست میارین. اینطوریکه یاد می گیرید و رشد می کنین.

شما می توانین به کد دیگران هم نگاه کنین، اما اونرو کپی نکنین و داخل کد خودتون نگذارید. اگر در کد وارد کنین و اجرا نشه، نمی توانین اونرو رفع اشکال کنین. کد دیگران را تجزیه و تحلیل کنین، کمی درباره نحوه کار آن یاد بگیرین، بعد خودتان اونرو بنویسین.

نکته: از کم شروع کنین :

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

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

من می دونم، برنامه های مبتنی بر متن ، گرافیکی و سه بعدی نیستن. شما می دونید که چگونه همه می گند که ، شما نیازی به دونستن ریاضی برای برنامه  نویسی ندارین؟ خوب این برای برنامه نویسی گرافیک 3D درست نیست. شما نیاز به درک مفیدی از هندسه، جبر خطی، و کمی از حساب دیفرانسیل و انتگرال دارین.

بسته به نوع زبان برنامه نویسی که یاد می گیرین ،حتی یک GUI معمولی با دکمه ها و جعبه های متن هم می تونه دشوار باشه . این واقعا نیازی به دونستن ریاضی نداره، اما به احتمال زیاد نیاز به یک درک کامل از برنامه نویسی شی گرا و نمودارهای جسمی پیچیده داره.

توصیه من برای مبتدی ها اینکه که بازی های مبتنی بر متن را برای مدتی بنویسن. چند بازی مثل “حدس زدن شماره”، “مسابقه چند گزینه ای” و “تیک تاک” . سعی کنین ماجراجویی کنید.

از این پروژه ها برای یادگیری تمام ویژگی های زبان برنامه نویسی انتخاب شده خود استفاده کنین.

نکته: زیاد برنامه نویسی کنین :

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

کمی شبیه نجاریه. شما می تونین همه چیزهایی را که دوست دارین در مورد نجاری بخونین، اما خوندن تنها به شما مهارت لازم برای ساخت یه میز رو نمیده. اگر واقعا می خواین یاد بگیرین که چطور یه میز  بسازی، باید چوب، یک اره و  چسب ها را اماده کنین و در واقع تلاش کنین تا یه میز  بسازین. اولین میز شما احتمالا وحشتناک میشه. بنابراین شما باید تئوری ها رو بخوانین یا مشاوره بگیرین از یه نجار واقعی . میز دوم هنوز شاهکار نیست، اما بهتر از اولین تلاش شماست. اگر میزهای خود را نگه دارید و بارها تلاش کنید در نهایت شما یک میز دلخواه خواهید داشت.

برنامه نویسی هم همینطوره، در اون شما باید نرم افزار های مختلف رو برای به دست آوردن مهارت بنویسین. اولین برنامه ای که می نویسین زیاد بدرد نمیخوره و احتمالا کد کثیفی داره اما مهم نیست. بعضی از نظریه ها را بخوانین، راهنمایی دریافت بگیرین و یک برنامه جدید ایجاد بنویسین. هر برنامه ای که می نویسین باید بزرگتر و بهتر از گذشته باشه. این مراحل را برای مدت زمان طولانی تکرار کنین و به متخصص تبدیل بشید.

نکته : راهنمایی بخواید :

اگر سعی کردین مشکل خودتون رو برای بیش از یک ساعت حل کنین اما به جواب نرسیدین ممکنه زمان برای درخواست کمک باشه.

بعضی از دانشجوها بلافاصله بدون صرف وقت برای حل مشکل خودشون از دیگران کمک میگیرن. این امر به طور کلی در جامعه برنامه نویسی مورد توجه قرار گرفته . مردم ممکنه به شما بگن که به WhatHaveYouTried.com مراجعه کنید.

دانشجوها دیگه هرگز حاضر به دریافت کمک نیستن. این احتمالا یادگیری اونها رو کاهش می ده. اگر سعی کردین مشکل خودتون رو حل کنین، اما به هیچ  نتیجه ای نرسیدین، حتما  درخواست کمک کنین.

با این همه، پاسخ کسی رو به سوالات خودتون، کپی نکنین. جواب را تجزیه و تحلیل کنین و علت خطای خودتون رو یاد بگیرین. به این ترتیب، وقتی که شما با یه خطا  دوباره روبرو می شین، از قبلا می دونین که چطور اونرو  رفع کنین.همیشه سعی کنین مشکل خودتون رو برای اولین بار در گوگل جستجو کنین.

نکته : از راه درست درخواست کمک کنین :

مبتدی ها اغلب نمی خوان سؤالات خودشونو مطرح کنن، چراکه تجربیات اونها در مورد پرسش ها در جامعه برنامه نویسی بسیار دور از انتظارون بوده. اگر سوال خودتونرو به روش درست مطرح کنین، تجربه بهتری پیدا میکنین.

  1. پیام خطا دقیق خود را در جامعه قرار  بدین این مهم ترین عنصر اطلاعاته. اغلب مردم سعی نمی کنن به سؤال جواب بدن مگر اینکه پیام خطای دقیق را ببینن.
  2. اگر پیام خطایی وجود نداشته باشه، توضیح بدین که چه اتفاقی قرار بیفته  و چه اتفاقی افتاده . چیزی شبیه به “من انتظار داشتم که خروجی ۵ باشه، اما در واقع خروجی ۷ شد”. اغلب مشکل در کد شما نیست، در انتظار شماست. اگر شما چیزی را که انتظار نداشتین توضیح ندین، با جواب هایی مثل “کد به نظر میرسه درسته” اما “مشکل چیه؟” روبرو میشین.
  3. کد خراب خود را در جامعه قرار بدین. بدون دیدن کد جواب دادن خیلی سخت میشه.اونرو در اختیار دیگران قرار بدین، اگر اون خیلی بزرگ نیست، چرا که دیگران  کد شمارو برای بررسی مشکل اجرا خواهند کرد. اگر کد بیش از حد بزرگه  اون رو در ،  Github Gist یا Pastebin.com بگذارین، بعد لینک رو به سؤال خودتون اضافه کنین.
  4. کد خود را به درستی فرمت کنید ، کد خودتون رو مثل متن معمولی قرار ندین. یاد بگیرین چطور کد خودتون رو به سادگی فرمت کنین تا بتوانین اونرو بخونین.
  5. آنچه که قبلا سعی کرده اید را بگین. این به دیگران نشون میده که شما قبلا تلاش کردین.
  6. سعی کنید از اصطلاحات صحیح استفاده کنین. این همیشه امکان پذیر نیست، چرا که شما هنوز هم تمام اصطلاحات را یاد می گیرین، اما بهترین شات را به در جامعه قرار بدین. تلاش کنین که شرایط مشترک رو یاد بگیرین و از اونها به درستی استفاده کنین.

نتیجه :

برنامه نویسی سخت ، واقعا سخته. و اگر شما فقط از طریق کلاس های دانشگاه و یا آموزشگاه ها به دنبال یاد گیری باشین ، این کار ممکنه برای شما خیلی ناخوشایند بشه.

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

زیاد کد بنویسین روش های مختلف را بخونید، خواندن، کد کردن، خواندن، کد کردن، خواندن و غیره و در نهایت شما رو حرفه ای میکنه.

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

از همه مهمتر، از آن لذت ببرید و ادامه دهید!

پی نوشت :

این نوشته برداشتی آزاد  با اندکی تغییر از کتاب برنامه نویسی برای مبتدی ها نوشته تام دالینگ بود .