بایگانی دسته: برنامه‌نویسی

زکات علم آموزش‌دادن آن است

سلام

همانطور که می‌دانید زکات علم آموزش‌دادن آن است. من هم دوست دارم یه دوره برای شروع برنامه‌نویسی از اول این‌جا شروع کنم (احتمالا پاسکال->سی‌پلاس‌پلاس->سی‌شارپ->تکنولوژی‌های تحت پلت‌فورم‌ دات‌نت) اما قبلش دوست دارم نظر سنجی کنم که آیا موافق هستید که این دوره شروع بشه یا نه؟

دیدگاه‌تان را بیان کنید!

زمانی برای طراحی به کمک برنامه‌نویسی

مدت‌ها پیش بود که در یک پزشک نوشته‌ای در مورد لوگو‌های مشهوری که با CSS3 طراحی شده‌اند خواندم. این طرح‌ها که نمونه‌های دیگری را نیز می‌توانید در سایت اصلی آن ببینید هنوز هم جالب است. اما امروز که به دنبال یک کتاب‌خانه‌ی جاوااسکریپت برای آنلاین کردن پروژه‌ی خامه‌عسل (که کاربران قدیمی دو برنامه‌نویس چند باری اسم این پروژه را شنیده‌اند!) بودم به کتاب‌خانه‌ی رافائل رسیدم.

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

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

این کره‌ی زمین به کمک کدی به طول ۱۵۶۸۸ کارکتر تولید شده است (حدود ۱۵ کیلوبایت) که احتمالا تصویری با این کیفیت حجمی بسیار بیشتر خواهد داشت و اگر خودتان ساخته‌شدن‌ش را امتحان کنید متوجه زمان‌بر بودن تولید آن می‌شوید (و اگر بخواهید جزئیات آن را ببینید پس از زمانی متوجه می‌شوید با شکلی پر از خطوط مختلف روبرو هستید).

ولی شکل‌های ساده‌تر مثلا شکل زیر به کمک کدی به طول ۱۶۶۳ کارکتر تولید شده است و زمان ساخت بسیار کمی دارند (تقریبا احساس نمی‌شود) و حجم‌شان نیز از تصویر بسیار کمتر خواهد بود.

با اینکه این بخش از این کتاب‌خانه بسیار جالب است (به نظر من حتی از اوگوهای CSS3 هم جالب‌تر است!) اما این تنها بخش از این کتاب‌خانه نیست. بخش جالب دیگر آن بخش نمودارهای آن است که کتاب‌خانه‌ی زیرمجموعه‌ی خودش را دارد و کتاب‌خانه‌ای کاربردی است. (ضمنا در صفحه‌ی اصلی نیز می‌توانید طراحی‌های جالبی پیدا کنید)

به نظر من این کتاب‌خانه در نوع خودش کتاب‌خانه‌ای بسیار کاربردی حساب می‌شود مخصوصا برای کسانی که طراحی و تولید اشکال در صفحه (مثل همین آیکون‌ها) را به  استفاده از تصاویر تولید شده را ترجیح می‌دهند.

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

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

ابزاری مفید برای طراحان وب، یا کسانی که می‌خواهند این کار را یاد بگیرند

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

در این دنیای بزرگ، که شاید چندان هم بزرگ نباشد، عده‌ای هم به این اندیشیده‌اند که چگونه این روند را ساده‌تر کنند. چنین اندیشه‌هایی، منجر به ایجاد سرویس‌هایی شده است؛ که امروز می‌خواهم یکی از آن‌ها به نام jsFiddle را به شما معرفی کنم.

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

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

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

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

شاید فکر کنید که چنین ابزاری چندان به درد بخور نیست، همانطور که خلق چیز‌های جدید هم در فناوری وب آنقدر بزرگ نیست… اما باید بگویم که چنین نیست! فناوری‌های تازه‌ی اچ‌تی‌ام‌ال۵ و سی‌اس‌اس۳، به کمک جی‌کوئری می‌توانند بسیار شگفت‌انگیز باشند. همچنین افکت‌های سی‌اس‌اس۳ به وسیله‌ی پردازنده‌ی گرافیکی شتاب داده می‌شوند، به این دلیل، این گونه افکت‌ها در گوشی‌های موبایل نیز به نرمی اجرا خواهند شد…

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

پی‌نوشت: محیط کاربری پروژه‌ی فعلی دو برنامه‌نویس، که آزینیوم نام دارد، به وسیله‌ی اچ‌تی‌ام‌ال۵ و سی‌اس‌اس۳ نوشته شده است. اما شما میان آن و یک برنامه‌ی Native تفاوتی نخواهید دید! (البته امیدوارم!!)

پی‌نوشت ۲: استفاده از میانبر های صفحه‌ی کلید نیز می‌تواند سرعت کار شما در جی‌اس‌فیدل را بهبود بخشد:

شروعی برای یک برنامه‌نویس خوب

هر روزه آدم‌ها بیشتری جذب دنیای فناوری‌ اطلاعات (یا همان آی‌تی) می‌شوند. آدم‌هایی که اکثرا به فکر استفاده از امکانات آن هستند و نه به فکر تولید امکانات. بعضی مواقع هم آدم‌هایی پیدا می‌شوند که می‌توانند ابزار تولید کنند. ابزار‌هایی که می‌تواند بهینه و به‌صرفه باشد و شاید هم ابزارهایی برای تخریب. این آدم ها برنامه‌نویس نام گرفته‌اند و ابزار تولیدشان هم زبان‌های برنامه‌نویسی است. از زمانی که زبان‌های برنامه‌نویسی معدود و جان‌فرسا بودند مدت‌ها گذشته‌است و در زمان حال، زبان‌های برنامه‌نویسی مختلفی برای استفاده‌های مختلف موجود است. زبان‌های آموزشی مثل پاسکال و یا زبان همه‌کاره‌ای مثل C++ (که از استفاده‌اش برای نوشتن سیستم‌عامل گرفته تا محاسبات دانشگاهی کاربرد دارد)

اما این همه‌چیز نیست. این ابزار نیاز به راهکاری دارد، نیاز به دستورالعملی دارد که آن را الگوریتم(گرفته شده از اسم خوارزمی یکی از دانشمندان ایرانی) می‌نامند. الگوریتم مشخص‌کننده‌ی کارایی و بهینه‌بودن نرم‌افزار است و نقش اصلی را به‌عهده دارد. البته الگوریتم هم تا حدودی به زبان برنامه‌نویسی وابسته است، مثلا اگر بخواهیم به یک روبات بفهمانیم که دربی را باز کند باید دستورات زیادی برای کنترل اجزای مختلف آن و حرکت هماهنگ آن‌ها در قالب کد به روبات داده شود تا بتواند درب را باز کند. اما برای یک حیوان خانگی این تعداد دستورات بسیار کم‌تر است و برای انسان در حد یک دستور. در این مثال دستورات روبات را می‌توان به کدهای اسمبلی(یا زبان ماشین) تشبیه کرد، حیوان خانگی را به زبان‌های سطح بالاتری(زبان‌های سطح بالا زبان‌هایی هستند که دستور زبان آن‌ها به زبان انگلیسی نزدیک‌تر است) مثل C++ و انسان را می‌توان به زبان‌هایی مثل C#.Net و VB.Net تشبیه کرد.

البته این که به زبان ساده‌تری برسیم نیاز‌مند فدا کردن میزان قابل‌توجه‌ای از منابع سیستم است. مثلا ساختن یک انیمیشن به صورت همزمان(یعنی با کمک کد تصاویر را در لحظه بسازیم) با زبان‌های سطح بالا میزان زیادی از منابع سیستم را می‌گیرد، اما نمونه‌هایی جالب با حجم حداکثر ۶۴کیلوبایت که با زبان اسمبلی نوشته‌شده‌است به‌خوبی نشانگر فدا شدن میزان قابل‌توجه‌ای از منابع سیستم در زبان‌های برنامه‌نویسی سطح بالاتر است.

در ادامه بخشی از مقاله خود‌آموز برنامه‌نویسی در ۱۰ سال نوشته Peter Norvig ترجمه مهدی عسگری را برایتان نقل می‌کنم:

 محققان نشان دادند که برای متخصص شدن در بسیاری از زمینه ها (از شطرنج گرفته تا آهنگ سازی ، اپراتوری تلگراف ، نقاشی ، نواختن پیانو ، شنا ، تنیس ، عصب شناسی ، …) حدود 10 سال زمان لازم است. نکته ی مهم انجام کار پیوسته و با توجه است ، نه صرفا کاری را مدام تکرار کردن ، بلکه به چالش کشیدن خودتان با کارهایی که فراتر از توانایی فعلی تان است و تحلیل کارایی تان قبل و بعد از انجام ان کار و اصلاح اشتباهاتتان. و بعد تکرار کنید. و دوباره تکرار کنید. هیچ میانبری وجود ندارد: حتی موزارت که در 4 سالگی اعجوبه ای در موسیقی بود ، 13 سال طول کشید تا بتواند اولین کار حرفه ای و جهانیش را بسازد.

اما هر برنامه‌نویسی شروعی داشته است. همانطور که در اینجا گفته‌ام، شروع برنامه‌نویسی برای من با زبان پاسکال بود. فکر می‌کنم این شروع، شروعی عالی بود. زبان پاسکال زبانی ساده است و ساخت‌یافتهترین زبان برنامه‌نویسی است؛ ساخت‌یافته بودن پاسکال به درک آن(که مهمٰ‌ترین چیز برای یک برنامه‌نویس است) بسیار کمک می‌کند. اگر می‌خواهید واقعا برنامه‌نویس شوید(و بفهمید چه کدی می‌نویسید و صرفا کدها را ترکیب نکنید تا نرم‌افزاری ساخته شود) و بدون اطلاعات قبلی می‌خواهید شروع کنید بهتر است با پاسکال شروع کنید. اما مراقب آموزش‌های غیراستاندارد هم باشید. توقع نداشته باشید یک‌شبه همه‌ی رمز و رموز پاسکال را یاد بگیرید. آموزشی غیر استاندارد است که از شاخه‌ای به شاخه‌ی دیگر بپرد، زود سراغ شئ‌گرایی برود(که البته در پاسکال تقریبا بیهوده است).

مرحله به مرحله یاد بگیرید و تمرین کنید. فراموش نکنید گوگل دوست شماست. هرآنچه مشکل شماست، فقط مشکل شما نیست. اگر در منابع فارسی نتوانستید راه‌حلی برای مشکل خود بیابید، مطمئن باشید که می‌توانید در منابع انگلیسی زبان جواب خود را بیابید و اگر هم نیافتید می‌توانید مشکل خود را  با برنامه‌نویسان خبره تر درمیان بگذارید. اگر در زبان انگلیسی مشکل دارید بهتر است هر چه زودتر مشکل خود را حل کنید. بیش از ۹۰ درصد منابع به زبان انگلیسی هستند و آموختن زبان انگلیسی برای یک برنامه‌نویس(و می‌توان گفت برای هر دانش‌جویی) تقریبا اجتناب ناپذیر است.

پس از اینکه با مفاهیم برنامه‌نویسی آشنا شدید پیشنهاد می‌کنم سراغ C++ بروید. به غیر از بیش‌از حد کاربردی بودن این زبان دلیل دیگر پیشنهاد من این است که بیشتر زبان‌های پرکاربرد چه در وب مثل PHP و JavaScript و چه در ویندوز مثل Java و C#.Net ساختاری بسیار مشابه به این زبان دارند و این به شما کمک می‌کند برای یادگیری زبان‌ها تخصصی‌تر وقت کم‌تری صرف کنید.

اما این‌ها فقط ابزارند! مهم‌ترین بخش هر نر‌م‌افزار الگوریتم آن است. بدون الگوریتم ابزار‌ها به‌ هیچ دردی نمی‌خورند. درکنار یادگیری زبان‌های برنامه‌نویسی مقدار کمی هم الگوریتم یاد می‌گیرید ولی این کافی نیست. برای نوشتن کدهای بهینه‌تر نیاز به الگوریتم‌های بهتر و پیش‌رفته‌تری دارید. Introduction of algorithms که سومین ویرایش از ترجه‌ی آن از بیان رسا و ترجمه‌ی خوبی برخوردار است منبع خوبی برای شما به‌حساب می‌آید. در کنار آن با توجه زمینه‌ی کاری‌تان به دنبال الگوریتم‌های مناسب باشید.

فرآیند تولید نر‌م‌افزار فرآیندی است که اگر بخواهید نرم‌افزاری بهینه تولید کنید زمان‌بر است ولی زمانی که برای تولید آن می‌کنید خیلی کمتر از زمانی است(که اگر ترم‌افزاری غیر بهینه تولید کنید) صرف اشکال‌یابی و رفع‌اشکال نرم‌افزار می‌کنید. بعضی مواقع باید کار‌های سخت انجام داد تا بعدا راحت‌تر بود(إِنَّ مَعَ الْعُسْرِ يُسْرًا-سوره شرح آیه ۶ +) به نوعی می‌توان گفت برنامه‌نویسی هم مثل ساختن دیوار می‌ماند اگر راه را درست بروید نرم‌افزار خوبی خواهید داشت در غیر این‌صورت نرم‌افزاری ناپایدار و پر از اشکال خواهید داشت.

ویندوز ۸ وارد مرحله‌ی RTM شد!

بنابر گفته‌ی وبلاگ رسمی ویندوز ۸، نسخه‌ی RTM ویندوز ۸ دیروز ریلیز شد. نسخه‌ی RTM (مخفف release to manufacturing) معمولاً تفاوت چندانی با نسخه‌ی نهایی ندارد. این نسخه، برای توسعه‌دهندگان منتشر می‌شود تا نرم‌افزار‌های خود را با نسخه‌ی نهایی ویندوز هماهنگ کنند.

بر اساس گزارش‌های منتشر شده، زمانبندی انتشار ویندوز ۸ به شرح زیر است:

  • ۱۵ آگوست: انتشار در اشتراک‌های TechNet و MSDN
  • ۱۶ آگوست: کاربرانی که یک  Microsoft Software Assurance دارند، می‌توانند نسخه‌ی اینترپرایز ویندوز ۸ RTM را دانلود کنند. همچنین اعضای Microsoft Partner Network به ویندوز ۸ دسترسی خواهند داشت.
  • ۲۰ آگوست: اعضای  Microsoft Action Pack Providers به ویندوز ۸ دسترسی خواهند داشت.
  • ۱ سپتامبر: مشتریان  Volume License بدون  Software Assurance هم به ویندوز ۸ دسترسی خواهند داشت.

و البته نسخه‌ی نهایی به مشتریان در تاریخ ۲۶ اکتبر عرضه خواهد شد!

بنابراین، احتمالاً در روز ۱۵ آگوست شاهد پیدا شدن لینک‌های دانلود نسخه‌ی RTM ویندوز ۸ در اینترنت خواهیم بود. البته باید مواظب باشید که به اشتباه، نسخه‌ی قدیمی ویندوز ۸ را دانلود نکنید! چرا که چنین اشتباهی با این وضع اینترنت، بسیار دردناک خواهد بود ;-)

لازم به ذکر است که ویژوال استودیو ۲۰۱۲ و دات‌نت‌فریمورک ۴.۵ هم وارد مرحله‌ی RTM شده است و تا حدود ۴۰ روز دیگر نسخه‌ی نهایی آن منتشر خواهد شد. برای اطلاعات بیشتر، این صفحه را ببینید.

پی‌نوشت: یکی از قابلیت‌های قابل توجه که احتمالاً در نسخه‌ی RTM وجود خواهد داشت، این تصویر‌های بیشتر و زیباتر برای زمینه‌ی استارت‌اسکرین است:

به نظرم خیلی هیجان انگیز است!

باید صبر کرد و دید که آیا ویندوز ۸ می‌تواند برگ برنده‌ی مناسبی برای مایکروسافت باشد؟

منابع: +، +، + و +

مایکروسافت فعلا خیال تعطیل کردن silverlight را ندارد

سایت سافتگذر خبری تحت عنوان عقب‌نشینی مایکروسافت در رقابت با یک نرم‌افزار را در تاریخ 90/8/18 منتشر کرده مبتنی بر اینکه مایکروسافت در رقابت با فلش که siverlight را ارائه کرد در حال عقب نشینی است و در رقابت با این تکنولوژِی شکست خورده

شرکت مایکروسافت با هدف رقابت با ” Adobe’s Flash “، نرم‌افزار ” Silverlight ” را راه‌اندازی و توسعه داد. اما آیا حالا این شرکت از این تصمیم عقب‌نشینی کرده و می‌خواهد این بخش را تعطیل کند.

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

اما من نظر دیگری دارم..

ادامه خواندن مایکروسافت فعلا خیال تعطیل کردن silverlight را ندارد

اعشار و نوع اعشاری پیشفرض در سی شارپ

هنگامی که مینویسیم float a=3.14 یک کامپایل ارور دریافت میکنیم.دلیل آن این است که حالت پیشفرض برای اعداد اعشاری در سی شارپ، double است و نه float به همین دلیل باید از casting استفاده کنیم که دو راه دارد:

float a=3.14f
float a=(float)3.14

و برای تبدیل به decimal نیز دو روش وجود دارد:

decimal a=3.14m
decimal a=(decimal)3.14