از کجا ریاضی یاد بگیرم؟ منابعی برای گیک های ریاضی

حامد نوشته:

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

من هم گیک ریاضی نیستم. دوست داشتم بودم (: می‌دونم ریاضی شاخه‌های مختلفی داره مانند دیفرانسیل و انتگرال و جبر و هندسه. حالا کسی در وبلاگ من هست که بتونه هم جواب این دوستمون رو بده هم باعث بشه من هم چند تا کتاب جدید بخرم؟ (:

سیزده پاسخ به اینکه «چرا سی نحس نیست؟»

Screenshot from 2015-11-08 10-03-33

سوال امروزمون اینه:

جادی من این ترم برنامه نویس گرفتم ++C ولی خیلی سخته و یه سوال این زبان برنامه نویسی به چه دردی میخوره وقتی مثلا #C هست چرا باید برنامه نویسی با اون یاد گرفت

اولین جواب که اینه «چون استادتون گفته» (: به هرحال یک جایی هستی که پذیرفتی اونجا باشی و استاد هم داره یک چیزی درس می ده و تو هم باید بخونی و امتحانش بد‌ی (: اما این همه جواب نیست و خیلی‌های دیگه که اصولا تو مدرسه و دانشگاه نیستن هم می‌پرسن که «چرا باید سی /سی پلاس پلاس یاد گرفت». بذار در چندین نگاه مختلف جواب بدم، البته با تکیه بر سی. منم خیلی سی پلاس پلاس کار نیستم.

  1. سی یک زبان پایه‌ است. پسرخاله من گیتار می‌زنه و دخترهای اطرافش حسابی از این مساله خوشحالن. بسیار هم خوب می‌زنه و خیلی هم سریع آهنگ‌های جدید رو یاد میگیره. اون یکی پسر خاله‌ام هم علاقمند شد همین مهارت رو داشته باشه و با تبلچرهای گیتار شروع به تمرین کرد ولی هیچ وقت خیلی خوب نشد. فرقشون چیه؟ اولی مدت‌ها گیتار کلاسیک زده و نت خونی و غیره بلده و دومی فقط با هدف کارهای باحال و نتیجه گرفتن سریع، با تبلچر پیش می ره. این فرق بین کسی که پایه‌ای مثل سی رو بلده و بعد با پایتون برنامه می‌نویسه و کسی که سعی می‌کنه با یاد گرفتن جانگو یک سایت باحال بسازه دیده می‌شه چه برسه به کسی که سی بلده و سی شارپ می‌نویسه و کسی که فقط سی شارپ بلده.
  2. سی زبانی سطح پایینتر از جاوا و پایتون و سی شارپ است که به شما یاد می‌ده سخت‌افزار و سی پی یو چطوری کار می‌کنن و حافظه به چه شکلی مدیریت می‌شه. اگر قراره از برنامه نویسی درک خوبی داشته باشین، دونستن این چیزها کمک بسیار زیادی بهتون می‌کنه.
  3. بعضی معتقد هستند اگر قراره توی برنامه نویسی پیشرفت کنین، لازمه آبسترکشنی یک لایه پایین‌تر از زبان اصلی‌تون رو درک کنین. مثلا اگر پایتون و جاوا و سی پلاس پلاس می نویسین خوبه سی بدونین. اگر سی شارپ می نویسین باید سی پلاس پلاس رو بلد باشین و اگر سی می‌نویسین باید اسمبلی بدونین. اینجوری شیوه کارکرد زبان برنامه نویسی خودتون رو درک می‌کنین. درست مثل کسی که اگر قراره رانندگی حرفه ای کنه باید بدونه کلیت موتور چطوری کار می‌کنه و اگر قراره طراح موتور باشه باید از فیزیک مکانیک هم درک داشته باشه و اگر قراره فیزیک مکانیک رو پیش ببره، لازمه در مورد لایه پایینی (مثلا کوانتوم) اطلاعات داشته باشه.
  4. سی سریع است. برنامه خوبی که به سی نوشته بشه تقریبا از نظر سرعت همه زبان‌های سطح بالاتر رو پشت سر می‌ذاره. اگر قراره چیزی بنویسیم که اولویت اصلی‌اش سرعت باشه، سی یک گزینه بسیار خوبه.
  5. سی بهینه است. اگر قراره برای یک یخچال، تلویزیون و … برنامه نویسی کنیم یا از سیستم‌های امبد استفاده کنیم یا میکروپروسسور‌ها رو کنترل کنیم، سی یکی از بهترین گزینه‌ها است. تقریبا هیچ زبون دیگه ای (به جز اسمبلی) نیست که بتونه با محدودیت‌هایی مثل «حافظه چهار کیلوبایت» کنار بیاد.
  6. سی تقریبا در همه جا حاضره. در حال حاضر محبوب‌ترین زبان‌ها به ترتیب جاوا، سی، سی پلاس پلاس و بعدش سی شارپ هستن. این شاخص هر ماهه آپدیت می‌شه و سی در طول پونزده سال گذشته رتبه‌اش هر ماه یا اول بوده یا دوم.
  7. هر چقدر کار جدی‌تر باشه، حضور سی پر رنگ‌تر است. بحث نوشتن یک سیستم عامل است؟ لینوکس، ویندوز و مک هر سه بیشترین کد سی رو دارن. بحث استک‌های اینترنت است؟ بسیاری از اونها با سی پیاده سازی شدن. حجم عظیمی از مهمترین برنامه‌ها، با سی هستن؛ همینطوره خیلی از بازی‌ها. یاد گرفتن سی به شما فرصت کار روی چیزهایی بیشتر از برنامه حسابداری فلان و برنامه حضور غیاب بهمان رو می ده.
  8. سی یک زبان مبتنی بر بلاک و فانکشن است بدون اینکه شما رو درگیر شی گرایی کنه. نظر شخصی من است ولی آبجکت اورینت پروگرمینگ بیشتر از اونی که لازم بود احاطه پیدا کرد و دنیای آینده ازش دورتر خواهد شد. البته این مساله رو در حال حاضر هم با زبان‌های جدید می‌بینیم.
  9. سی یک زبان سطح متوسط است. تقریبا هیچ زبان دیگه ای در این سطح نیست. شما یا با زبان‌های سطح پایین (مثل اسمبلی) درگیر هستین یا با زبان‌های سطح بالا که سخت افزار رو از شما پنهان می‌کنن. به همین دلیل شروع به نوشتن چیزی مثل یک درایور سخت افزاری با چیزی به جز سی به دلایل خیلی خوبی نیاز داره.
  10. سی پورتابل است. یک برنامه رو با سی بنویسین و تقریبا هر جایی که دوست دارین اجراش کنین.
  11. سی خیلی کم تغییر می‌کنه. یک برنامه رو به سی بنویسین و دهه‌ها اجراش کنین.
  12. سی قشنگ است. سینتکس سی بسیار ساده است و برنامه‌های نوشته به سی بسیار خوانا.
  13. سی در این روزها برنامه‌نویس‌های خوب کمی داره. بازار پر است از سی‌شارپ‌کارهای متوسط و اگر شما علاقمند هستین به یک ارتش ذخیره کار چند ده هزاری بپیوندین، سی شارپ یا دات نت بهترین گزینه است. در مقابل اگر شما حرفه‌ای در سی باشین فرصت‌های کاری بسیار جالبتری پیش روی شماست. فکر می‌کنین وقتی یک شرکت دنبال یک برنامه نویس حرفه‌ای سی می‌گرده چند نفر بهش مراجعه می‌کنن یا اصولا چند نفر هستن که به یک پروژه نوشته شده به سی کامیت‌های مثبت کنن و در سطح جهان دیده بشن؟

معلومه که نمی‌گیم زبان‌های دیگه خوب نیستن. نظر من همیشه اینه که توی هر چیزی خوب باشین وضعتون خوبه و این رو هم می‌پذیرم که خیلی‌ها دنبال یک شغل معمول و مرسوم هستن که خب معمول‌ترین و مرسوم‌ترین زبان برنامه بازار براش بهترین چیزه (: ولی خب.. اگر سوالتون اینه که «چرا سی» جواب‌های من اینها بودن. معلومه که دوستان می‌تونن در کامنت‌ها تکمیلش کنن.

فروم: برای یاد گرفتن پایه ای [منطق و اصول] برنامه نویسی باید چه چیزهایی خوند؟

نینجای برنامه نویسی

وحیده پرسیده:

درباره انتخاب زبون برنامه نویسی (با توجه به مطالبتون و کمک دوستان) به این رسیدم کi باید از پایه مثلا الگوریتم و فلوچارت شروع کرد و بعدش رفت سراغ یه زبون مثلا پایتون. هدفم اینه کi عمقی پایه ها رو یاد بگیرم کi وقتی به یه کد نگاه کردم بتونم درکش کنم خواهشم اینه کi سایتی مفید یا کتاب یا … میتونید معرفی کنید یا از دوستان برنامه نویستون بپرسید؟

و من ترجیح دادم به افتخار سیستم جدید کامنت‌ها از شما بپرسم… کسی که دوست داره الگوریتم یاد بگیره باید از کجا شروع کنه و کجا بره؟

«کمک! هاردم رو فرمت کردم» – بازیابی اطلاعات از هارد دیسک خراب

hard_problem

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

اگر هارددیسک رایانه‌تان خراب شده و دارید این مطلب را می خوانید به این نکته ها توجه کنید:

  • هیچگاه روی هارد دیسکی که مشکل پیدا کرده، به اشتباه فرمت شده، فایل هایش پاک شده و … چیزی ننویسید و اگر حرفه ای نیستید سعی نکنید با سعی و خطا مشکل را حل کنید. حتی اگر فایل ها پاک شده باشند یا هارد فرمت شده باشد، اطلاعات توسط یک حرفه ای قابل بازیابی هستند – به شرطی که خودتان تخریب را بیشتر نکنید.
  • در صورتی که از پی سی استفاده می کنید ممکن است مشکل از کابل ها باشد. اتصالات (شامل برق و کابل نواری مربوط به اطلاعات) را چک کنید که محکم باشند.
  • از نظر فنی بسیاری از هاردها در سرما بهتر جواب می دن. حتی خیلی ها در صورت مشکل در هارد اونو می ذارن تو یخچال و بعد تا سرده کپی می کنن یا حتی مثلا لپ تاپ رو می ذارن تو فریزر و از لای در با کابل شبکه بهش وصل می شن.
  • گاهی فشار دادن هارد جواب می ده! اگر چیزی شل شده و هارد درست کار نمی کنه ممکنه اگر حین فشار دادن وصلش کنین همه چیز درست کار کنه و دوستتون بتونه حینی که شما هارد رو دو دستی فشار می دین (بدون اینکه کج بشه یا بشکنه!) فایل ها رو کپی کنه.
  • و خب برنامه های زیادی هم هست که می تونن به شما کمک کنن. ممکنه به سادگی وصل کردن هارد به لینوکس باعث بشه این سیستم عامل بتونه فایل ها رو بخونه یا اصولا بتونین از سیستم عامل هایی که برای بازیابی اطلاعات درست شدن کمک گرفت.
  • هارد دو بخش فیزیکی و الکترونیکی داره. مثلا اگر مدار الکترونیکی هاردتون سوخته باشه، می تونین بخش فیزیکی هارد خراب که اطلاعات روش هست رو باز کنین و روی مدار مشابه از یک هارد دیگه ببندین و انتظار داشته باشین همه چیز کاملا اوکی پیش بره.

اما اگر اطلاعات واقعا براتون مهمه

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

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

پاسخ: ایا برنامه نویسی، شبکه و .. علم است؟

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

سلام احسان عزیز.

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

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

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

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

بخش دیگه ای از سوالت هم می پرسه «آیا اینها خاصیت بقیه علوم رو دارن؟». خاصیت بقیه علوم چیه؟ اگر اینه که زندگی رو راحت تر می کنن باید بگیم که علوم کامپیوتر این روزها یکی از علم‌ترین علم‌ها هستن چون شدیدا در حال راحت کردن زندگی هستن و معلومه که جواب به «مفید هستن؟» هم مثبت است.

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

سوال و جواب: برنامه نویسی اندروید رو از کجا شروع کنم

جادی عزیز سلام

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

ممنون بابت وبلاگ باحالت و راهنماییت
شاد باشی

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

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

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

چند مطلب در باب متلب

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

مستقیم میرم سر اصل موضوع ، میخواستم نظرت رو در مورد Matlab بدونم (با توجه به اینکه مخابرات هم خوندی)

۱- متلب چیه ؟
۲- میشه یه زبون برنامه نویسی هم حسابش کرد ؟
۳- یه نرم افزار ریاضیه و نه چیزی بیشتر ؟
۴- آیا متلب یه مفسره ؟
۵- چه کارای جدی ای باهاش کردی ؟
۶- تو بیرون از دانشگاه و آزمایشگاه ، کاربردی دیدی ازش ؟
۷- تو دوستان و اطرافیان کسی رو دیدی که توش متخصص باشه و یا کارش مرتبط باشه ؟

خب من بهترین آدم برای جواب دادن به این نیستم و شاید حتی در تخصصم هم نباشه.. ولی سعی ام رو می کنم (:

متلب چیه ؟

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

میشه یه زبون برنامه نویسی هم حسابش کرد ؟

بله بدون شک. درسته که برای نوشتن وب سرور زبان خوبی نیست ولی حلقه داره و متغیر و .. چی دارم می گم؟ زبون برنامه نویسی نسل چهار است دیگه (:

یه نرم افزار ریاضیه و نه چیزی بیشتر ؟

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

آیا متلب یه مفسره ؟

نمی دونم.. اگر بخوام حدس الکی بزنم می گم مفسر است ولی امکان کمپایل هم داره (: کسی می دونه جواب درست رو؟

چه کارای جدی ای باهاش کردی ؟

فکر کنم هیچچی. در حد دانشجویی و گاهی برای پیچوندن یک نمودار که قرار بود سریع کشیده بشه. مشکل اینه که در لینوکس حداقل اون موقع که نسخه درستی نبود و اگر اشتباه نکنم تو ویندوز هم قفل شکسته بود و من زیاد طرفش نرفتم – حتی یامه یکبار توی آزمایشگاه کنترل مشقم رو ننوشتم و گفتم متلب برنامه دزدی تحت ویندوز است و من باهاش کار نمی کنم (: دلیل واقعی تنبلی بود. این سال ها من کارهای مشابه رو با R انجام می‌دم.

تو بیرون از دانشگاه و آزمایشگاه ، کاربردی دیدی ازش ؟

حتما داره ولی حوزه تخصصی من نیست.

تو دوستان و اطرافیان کسی رو دیدی که توش متخصص باشه و یا کارش مرتبط باشه ؟

من نه. اما دلیلش اینه که نه کار مخابرات می کنم نه ریاضیات نه تحقیق علمی (: دوستان کامنت می ذارن اگر باشن. من که نیستم (: