<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های سعید</title><link>https://virgool.ir/feed/@iclick.cmp</link><description>دنبال کننده و علاقمند برنامه نویسی و معماری نرم افزار، شاغل در سازمان عمومی</description><language>fa</language><pubDate>2026-11-10 20:31:30</pubDate><image><url>https://files.virgool.ir/upload/users/95359/avatar/avatar.png</url><title>سعید</title><link>https://virgool.ir/@iclick.cmp</link></image><item><title>یادگیری برنامه نویسی، دستورات ورودی و خروجی</title><link>https://virgool.ir/coderlife/یادگیری-برنامه-نویسی-دستورات-ورودی-و-خروجی-m8vgbbiazl01</link><description>در بخشهای قبلی در مورد دستورات، رابط کاربری، متغیرها و انواع داده‌ها صحبت کردیم، میدانیم که یک برنامه نویس می‌تواند روشهای مختلفی را برای برقراری ارتباط بین کاربر و نرم‌افزار انتخاب کند، نرم‌افزارهایی که برای استفاده کاربران عادی نوشته می‌شوند از رابط کاربری گرافیکی استفاده می‌کنند، حتی امکان برقراری ارتباط صوتی (دستیار صوتی آمازون، یا کورتانای ماکروسافت و ...) وجود دارد، حتی در دستگاه‌های تلفن همراه وجود سنسورهای مختلف توانایی برقراری ارتباط به روشهای دیگر را نیز مهیا می‌کند، اما در حال حاضر راحت ترین رابط کاربری که میتوان برنامه نویسی برای آن را یاد گرفت رابط متنی یا همان command line(خط فرمان) هست، در ساده ترین حالت سناریوی آن بسیار راحت و کارا هست، برنامه اجرا شده، ورودیهایی از کاربر گرفته و بعد از تفسیر آنها کاری انجام میدهد، حتی گاهی برنامه بسیار ساده است و بدون تفسیر ورودی کاری را انجام داده و میتواند خروجی نشان دهد. در این بخش با دستورات ورود و خروج آشنا شده، سپس با کمی از قوانین مربوطه آشنا میشیم.دستورات ورود و خروجیمعمولاً برنامه‌ها اینطورند که یک یا چند ورودی از کاربر گرفته و روی آنها عملیای انجام داده و خروجی را در صورت وجود نمایش میدهند. در رابط گرافیکی شما ورودیها را درون کادرهای مختلف تایپ کرده یا از گزینه‌های مختلف انتخاب کرده و با کلیک بر روی یک کلید عملیات مورد نظر انجام میشود، اما در رابط خط فرمان(رابط متنی) برنامه اجرا شده و با نمایش راهنماهایی ورودی مورد نظر را از شما می‌خواهد و بعد از اینکه شما از طریق کیبورد مقادیر را وارد کرده و انتر می‌زنید برنامه کار خود را ادامه میدهد.  سپس اگر لازم باشد خروجی مورد نظر یا پیغامی را به کاربر نشان میدهد.مثال: چاپ سلام دنیا در پایتون و سی شارپ:#python code:&#xA;print(&#34;Hello world&#34;)و سپس در سی شارپ://C# code&#xA;Console.Write(&#34;Hello world&#34;);از دستورات خروجی معمولا میتوان برای چاپ انواع داده‌های مختلف و حتی پیغامها استفاده کرد:#python code:&#xA;print(3)&#xA;myname=&#34;Yahya&#34;&#xA;print(myname)&#xA;Is_married= True&#xA;print(Is_married) &#xA;print(&#34;You will be greatest programmer&#34;)همانطور که دیدیم در پایتون دستور چاپ اطلاعات print و در سی شارپ Console.Write هست، البته اینها ساده‌ترین دستورات خروجی هستند که در این دو زبان وجود دارند، ممکن است دستورات خروجی دیگری نیز وجود داشته باشند، مثلاً در سی شارپ Console.WriteLine نیز وجود دارد که بعد از چاپ اطلاعات نشانگر را به خط بعدی منتقل میدهد. در پایتون دستور print به صورت پیشفرض بعد از چاپ اطلاعات بعدی نشانگر را به خط بعدی منتقل میکند، و برای پرهیز از این کار در پایتون میتوان به صورت زیر عمل کرد:print(&#34;a value&#34;,end=&#34;&#34;)همانطور که مشاهده می‌کنید، دستورات خروجی را میتوان به صورتهای مختلف به کار برد، چون در این سری آموزشی تنها هدف بنده توضیح موارد اساسی و اصلی در برنامه نویسی هست، به جزئیات پرداخته نمی‌شود، جهت آشنایی بیشتر با جزئیات انواع دستورات می‌توانید به آموزشهایی که برای زبان برنامه‌نویسی مورد علاقه‌تان وجود دارد مراجعه کنید.دستورات ورود اطلاعات:همانطور که قبلاً گفته شد، معمولاً برنامه بعد از اجرا شدن پیغامی نمایش داده و از کاربر درخواست ورود مقادیر را میدهد، پس لازم هست که با دستورات ورودی نیز کمی آشنا شویم:در پایتون:#python code: &#xA;your_name= input()و معادل آن در سی شارپ://c# code: &#xA;string your_name=Console.Readline();حال یک برنامه ساده می‌نویسیم:برنامه‌ای که اسم و فامیل را به صورت مجزا از کاربر گرفته و آنها را به فرمت زیر چاپ کند:Family Nameدر پایتون داریم:print(&#34;Please enter your name: &#34;)&#xA;your_name= input()&#xA;print(&#34;Please enter your family: )&#xA;your_family = input()&#xA;print(your_family,your_name)توضیح برنامه ساده هست، ابتدا با پیغامی از کاربر میخواهد نام خود را وارد کند، سپس منتظر میماند تا کاربر مقداری را از طریق کیبورد وارد کند تا آنرا در متغیر your_name بریزد، سپس با پیغامی از کاربر میخواهد تا فامیلی را هم وارد کند که بعد از وارد کردن فامیلی آنرا در متغیر your_family ذخیره می‌کند، در آخر آنها را به صورتی پشت سر هم چاپ میکند تا خروجی مورد نظر بدست بیاید. همانطور که میبینید در یک دستور خروجی میتوان چند اطلاعات مختلف را برای چاپ در مانیتور ارسال کرد، که آنها را با , (ویرگول) از هم جدا میکنیم.نکته: پایتون به صورت اتوماتیک در دستور print بین داده های خروجی فاصله میگذارد اما این در مورد سی شارپ و یا سایر اکثر زبانها صادق نیست. مثلا خروجی دستور print(1,2) در پایتون میشود: 2 1 اما خروجی دستور Console.Write(1,2) در سی شارپ میشود: 12. در اینجا بین یک و دو فاصله‌ای نیافتاده.در مثالی دیگر دو عدد از کاربر گرفته و حاصل ضرب آنها را چاپ میکنیم:در ابتدا، لازم هست توضیحی در مورد دستور input بکار برده شده در برنامه زیر داده شود، در پایتون میتوان به شکلی که در برنامه زیر مشاهده میکنید با دستور input پیغامی را به منظور راهنمایی دادن کاربر در مورد داده‌هایی که قرار هست  وارد کند، چاپ کرد. #python code: &#xA;a=int(input(&#34;please enter first number: &#34;))&#xA;b=int(input(&#34;please enter second number: &#34;))&#xA;print(&#34;the result is: &#34;,a*b)برنامه بسیار ساده هست، دو عدد از کاربر گرفته در متغیرهای a و b قرار میدهد، سپس حاصلضرب آنها را با یک پیغام مناسب چاپ میکند.تبدیل گرها:تقریباً در همه زبانها وقتی اطلاعاتی توسط کاربر توسط دستورات ورودی وارد میشود به صورت متنی( نوع داده رشته ای) وارد میشوند، یعنی حتی اگر کاربر مقدار 12 را وارد کند، ابتدا آن مقدار وارد شده برای کامپیوتر ارزشی معادل عدد 12 را ندارد بلکه به صورت یک دو (یک داده متنی) شناخته میشود، برای اینکه کامپیوتر نیز بتواند از 12 همان ارزش عددی آنرا برداشت کند باید ورودی را از نوع رشته‌ای به نوع داده‌ای عددی تبدیل کنیم، دستوراتی که این امکان را محیا میکنند اصطلاحاً تبدیلگرها نامیده میشوند، تبدیلگرها معمولاً توانایی تبدیل آنواع داده‌ها به یکدیگر را دارند، مثلاً میتوانند رشته را به عدد، عدد را به رشته، نوع صحیح را به اعشاری و اعشاری به صحیح و ... تبدیل کنند، مثلاً چند تبدیلگر در پایتون:#python code &#xA;string_number=&#34;2345&#34;&#xA;number= int(string_number) # متغیر اولی که رشته هست رو به صورت عددی در متغیر دوم میریزد&#xA;#------------------------------------------------------------------------------------------------&#xA;string_float=&#34;457.36&#34; #یک رشته حاوی یک عدد اعشاری&#xA;float_number=float(string_float) # مقدار رشته ای موجود در متغیر قبلی را به صورت یک عدد اعشار ذخیره میکندچند نمونه ار قوانین و نکات دستورات ورود و خروج:1- معمولا در یک دستور خروجی میتوان چند داده را چاپ کرد، برای جداکردن داده ها از ویرگول استفاده میشود و همه آنها را باید ما بین دوتا پرانتز نوشت، همانطور که در مثالها موجود است.2- دستورات ورودی معمولاً در سمت راست مساوی قرار میگیرند، یعنی به شکل زیر:name_of_variable = input_statement3- برعکس دستورات خروجی، در یک خط فقط میتوان یک ورودی را از کاربر گرفت.4- داده‌ها معمولاً به شکل رشته (string) از کاربر گرفته میشوند که برای استفاده های خاص با استفاده از تبدیلگرها به نوع داده‌ای مورد نظر تبدیل میشوند، البته در برخی زبانها دستوراتی هستند که کار را راحت تر کرده و برای گرفتن انواع داده های غیر رشته ای مثل اعداد دستورات جداگانه‌ای تدارک دیدند.خلاصه:در این بخش با دستورات خروجی و ورودی آشنا شدیم، مثالهای در مورد هرکدام آورده شد، به صورت مختصر با تبدیلگرها نیز آشنا شدیم، در آخر نیز با چند نکته در مورد دستورات ورودی و خروجی آشنا شدیم.در آینده:در بخش بعدی ابتدا با مفاهیم عملگر و عملوند آشنا خواهیم شد، و سپس چند برنامه ساده خواهیم نوشت، تا در ادامه سری آموزشی بیشتر در مسیر کد نویسی قرار بگیریم.</description><category>سعید</category><author>سعید</author><pubDate>Sat, 25 Apr 2020 02:25:13 +0430</pubDate></item><item><title>یادگیری برنامه نویسی، نوع داده ای در زبانهای مختلف</title><link>https://virgool.ir/coderlife/یادگیری-برنامه-نویسی-نوع-داده-ای-در-زبانهای-مختلف-dnu6vrjp5wcu</link><description>با سلام، برنامه ساده زیر به زبان پایتون رو از بخش قبل در نظر بگیرید:a=int(input())&#xA;b=int(input())&#xA;c=int(input())&#xA;print((a+b+c)/3)این برنامه سه عدد از کاربر گرفته و میانگین آنها را چاپ میکند، حالا فرض کنیم قرار هست برنامه ای بنویسیم که اسمی از کاربر گرفته و آنرا دوبار چاپ کند، در بالا یاد گرفتیم که در زبان پایتون چگونه در محیط متنی عددی از کاربر بگیریم، حالا چطور یک اسم از کاربر بگیریم؟ خب دستور آن در پایتون به این شکل هست:n = input()اما با دقت در کدها احتمالاً شما هم حدس زده‏ اید، زبانهای برنامه نویسی رفتار متفاوتی نسبت به یک عدد و یک اسم دارند، (مثلاً در همان نمونه های بالا، اسمها را با یک دستور و اعداد رو با دستور متفاوت‏‏ تری از کاربر میگیریم) درواقع این همان مفهوم مقادیر داده‏ ‏ای هست، در برنامه نویسی انواع مختلف داده ها وجود دارند که هرکدام استفاده های خاص خودشونو دارند و نسبت به هرکدام ممکن است امکانات و دستوراتی در زبانهای مختلف قرار داده شده باشد، باید بدانیم داده هایی مثل اسم یک شخص یا یک متن در کدام نوع داده‌ای تقسیم میشوند، یا باید بدانیم یک عدد مثل 3.5 د و یک عدد دیگر مثل 8 در کدام نوع داده‌ای تقسیم میشوند، و باید بدانیم چه عملیاتی میتوانیم روشون انجام دهیم و چه عملیاتی رو نمیشه، در ادامه به تشریح چند نوع داده ‏ای که تقریبا در همه زبانها امکان کار کردن بر روی اونها وجود دارد رو مختصرا بررسی میکنیم:1- داده های عددی (دو زیر گروه عمده اعشاری و صحیح)، مثل 7، 2.1 (2 ممیز 1)، 14 و... اعداد تقریبا همان مفهومشان رو در دنیای طبیعی حفظ کرده اند، منتها رفتار، محدودیتها و امکانات زبانهای مختلف نسبت به انواع اعداد ممکن است متفاوت از یکدیگر باشند. مثلا ممکن است 5/2(پنج تقسیم بر دو) در زبانی مقدار 2.5 و در زبانی مقدار 2 رو برگرداند و اگر بخواهیم در این زبان حتماً 2.5 را بدست بیاریم باید تقسیم رو طور دیگری انجام دهیم.نکته: در ادامه و در طول آموزشهای عملی بیشتر و دقیقتر با این مفاهیم کار خواهیم کرد.2- داده های متنی (تک حرفی و چندحرفی) دو نوع داده متنی عمده در زبانهای برنامه نویسی وجود دارد، داده متنی تک حرفی مانند &#39;k&#39; یا &#39;ع&#39; یا &#39;&amp;&#39; و... همانطور که میبینید اینها فقط معرف یک حرف هستند که اصطلاحاً به این نوع داده کاراکتر میگوییم و اکثراً با نشانه char میشناسیمشون. نوع دوم داده‌های متنی، رشته ها یا متون چند حرفی هستند مثل &#34;hassan&#34; یا &#34;به پدر مادر خود نیکی کنید&#34;. رشته ها رو به اسم string میشناسیم، زبانهای مختلف روشهای مختلفی برای تشخیص این نوع داده ها ارائه میدهند و حتی ممکن است رفتار و امکانات مختلفی برای هرکدوم ارائه دهند، حتی ممکن است زبانی تنها از متون چند حرفی پشتیبانی کند که در این صورت متون یک حرفی رو به چشم متنی که فقط یک حرف دارد میشناسد، یا حتی ممکن است زبانی به صورت مستقیم متون چند حرفی رو پشتیبانی نکند و متون چند حرفی رو به عنوان مجموعه ای از متنهای تک حرفی بشناسد. در زیر یک برنامه ساده رو به دو زبان مختلف مینویسیم، برنامه ای که قرار است دو کلمه رو به هم بچسبونه:# python code:&#xA;name = &#34;ali&#34;&#xA;family=&#39;hasani&#39;&#xA;name_family= name + familyخط اول این کد کامنت هست و کامپایل نمیشود، کامنت توضیحی هست که برنامه نویس برای خودش (یا دیگران) مینویسد، تا وقتی بعد از مدتی به کد نگاه میکند با کمک آن کامنتها سریعتر متوجه شود که آن قسمت از کد رو به چه منظور یا برای حل چه چیزی نوشته(با کامنتها در آینده بهتر آشنا میشیم).در ادامه دو متغیر ساختیم که در یکی اسم و در دیگری فامیلی رو قرار دادیم، در آخر هم اونها رو با کمک + به هم چسبوندیم و در متغیر جدیدی ریختیم. در ادامه همین کد رو در پی اچ پی مینویسیم تا متوجه شیم که ممکن است زبانهای مختلف برای یک کار از روشهای مختلفی استفاده کنن.// php code: &#xA;$name = &#34;ali&#34; &#xA;$family=&#39;hasani&#39; &#xA;$name_family= name.familyهمانطور که میبینید، هم طرز کامنت نویسی، هم نحوه اسم گذاری متغیرها(در پی اچ پی اسم متغیر با $ شروع میشه) با هم فرق داره، اما نکته‌ای که در این بخش برای ما مهمه اینه که در پایتون برای چسبوندن دو رشته (مقدار متنی) به هم از + ولی در پی اچ پی از .(نقطه) استفاده میشه. و این قسمتی از تفاوت رفتاری است که زبانهای مختلف ممکن است نسبت به انواع داده‌ها باهم داشته باشند.3- نوع داده‌ای منطقی(بولی یا boolean)، به طور ساده اینها درستی یا اشتباه بودن چیزی رو بیان میکنند و عموما با true یا false مقداردهی میشوند، فرض کنید قرار است نتیجه مقایسه دو عدد در متغیری ذخیره شود مثل تکه کد زیر در پایتون:a= 12 &#xA;b=54 &#xA;a_is_great_or_b = a &gt; b خب در اینجا، نتیجه کاملاً معلومه، باید درون متغیر a_is_greater_or_b   مقدار true(به معنی صحیح) قرار بگیرد. البته زبانهایی هستند که از این نوع داده‌ای پشتیبانی نمیکنن و بجای true و false از 0 و غیر صفر استفاده میکنن، صفر به معنی نادرست(false) و مقداری غیر از صفر به معنی درست (true).4- داده‌های شمارشی، مثل لیستها و آرایه‌ها، اینها درواقع دنباله‌ای از داده های مختلف هستند مثل لیست زیر در پایتون:thislist = [&#34;apple&#34;, &#34;banana&#34;, &#34;cherry&#34;]در اینجا متغیری ساختیم که میتونه لیستی از اسامی میوه‌ها رو در خود ذخیره کنه، همونطور که میبینید در اینجا اسم سه میوه که در بین دو تا &#34;(دابل کوتیشن) محصور شده اند درون یک جفت [ و ] قرار گرفته‌اند که با ,(ویرگول) از هم جدا شده‌اند، در واقع متغیر thelist در بر گیرنده لیستی از متغیرهای رشته‌ای هست، که میتوان به هرکدام از اون متغیرها هم به صورت مستقل دسترسی داشت مثل:print(thelist[0]) #به معنی، چاپ کن اولین عضو درون متغیر لیست روداده‌های شمارشی در واقع مجموعه‌ای از چند داده‌ مستقل و مختلف هستند که تحت یک نوع ذخیره میشن، و چون میتوان تعداد داده‌هایی که در بر گرفته‌اند رو شمرد و بدست آورد، همچنین میتوان با شماره قرارگیری هر زیرداده به اون زیر داده دسترسی داشت به همین دلایل به اونها داده‌های شمارشی میگن، معروفترین داده شمارشی هم آرایه هست.نکته: در مورد داده‌های شمارشی، باید در یک یا چند مطلب مفصل و دقیقتر بحث شود. فقط باید در نظر گرفت درک این نوع داده‌ها خیلی مهم و درست درک کردن و یادگیری استفادشون میتونه در برنامه‌ها خیلی مفید و حیاتی باشه.قوانین و نکته های استفاده از انواع داده ها:در ادامه این بخش با تعدادی از قوانین و محدودیتهایی که در اکثر زبانها در استفاده از داده ها و نوع بندی آنها رعایت میشه رو بیان میکنیم:1- در اکثر زبانها، وقتی متغیری را تعریف میکنیم، نوع داده‌ای که میشه درون اون ذخیره کرد رو هم بیان میکنیم.مثال زیر رو مطالعه کنید، دقت شود که توضیح کوتاه هر خط رو به صورت کامنت در همان خط مینویسم.your_name=&#34;hasan&#34; #متغیری ساختیم که میتونه مقدار رشته ای ذخیره کنه&#xA;your_age=24 #متغیری ساختیم که قرار هست اعداد صحیح رو ذخیره کنه&#xA;you_are_married=Fals #متغیری که نشانگر ازدواج کردنه، در اینجا یعنی ازدواج نکرده&#xA;your_average_points= 18.6 #متغیری که متوسط نمرات رو به صورت عدد اعشاری نگه میدارههمانطور که در بخش قبل گفته شد، در پایتون تعریف متغیر با اولین مقداردهی انجام میشه، و نوع داده ای که متغیر میتونه ذخیره کنه رو هم همون اولین مقدار تعیین میکنه. کدهای بالا گویا هستش.2- معمولاً وقتی متغیری از یک نوع تعریف میشه، دیگه نمیشود نوع داده‌ای دیگری رو درون اون ریخت،(در واقع همون تغییر نوع متغیر) یعنی مثلاً اگر متغیری به صورت رشته‌ای تعریف شد دیگه نمیشه عدد درون اون ریخت. البته برخی زبانها اجازه میدن که نوع داده‌ای یک متغیر رو در آینده تغییر داد اما با این وجود تغییر نوع متغیر در آینده میتواند مشکلاتی بوجود آورد پس حداکثر دقت رو میکنیم که این کار رو نکنیم.3- معمولاً میشه اعداد صحیح رو درون متغیرهای اعشاری ریخت، اما برعکسش ممکنه مشکلساز بشه، البته برخی زبانها مثل پایتون میتونن این قضیه رو اتوماتیک مدیریت کنن و مشکلی پیش نیاد، اما این عمل در زبانی مثل سی واقعاً ممکنه برنامه رو دچار مشکل کنه.4- یک سری عملیات روی داده‏‌های مختلف رو میشه در همه زبانها انجام داد، اما نحوه عملکرد هرکدام متفاوت است، مثلاً میشه اعداد رو باهم ضرب یا جمع، تقسیم یا منها و ...کرد، یا میتوان رشته ها رو به هم چسبوند یا به تعداد معینی تکرار کرد و یا قسمتی از متن درونشون رو برگردوند و ... پس بسته به زبانی که قرار هست یاد بگیریم باید بدونیم اون زبان قادر هست چه عملیاتی رو روی داده‌ها و به چه صورت انجام دهد.5- هر نوع داده‌ای در زبانهای مختلف میتواند محدوده خاصی داشته باشد، مثلا نوع داده‌ای صحیح در پاسکال حد اکثر تا از منفی 32768 تا 32767 رو میتونه قبول کنه(در پاسکال برای اعداد بزرگتر نوع داده‌ای جدایی وجود داره) اما در پایتون محدوده این عدد به محدودیتهای پردازنده وابسته هست، ممکن هست در زبانی رشته‌های معمولی حداکثر 256 حرف رو قبول کنن و در زبانی 32767 تا حرف رو قبول کنن. پس محدودیتهای زبان مورد استفاده‌مون در این زمینه‌ها رو هم باید در نظر گرفت.6- نوع داده‌ای شمارشی در اکثر زبانها آرایه هست، اما در پایتون آرایه به اونصورتی که در زبانهای دیگر مطرح هست وجود نداره، اما بجاش در پایتون لیست وجود دارد که میتواند همه امکانات اصلی آرایه‌ها رو هم داشته باشد، برخی زبانها هم لیستها رو دارند و هم آرایه‌ها رو.نکته: در اینجا فقط انواع داده‌ای اصلی رو شناختیم، یک سری نوع هم داریم که از ترکیب چند داده مختلف به دست میایند که به اونها داده‌های ترکیبی میگوییم، داده‌های شمارشی (آرایه، لیست و ...) یک نمونه از داده‌های ترکیبی هستند، ساختارها (structure) و کلاسها(class) هم نمونه‌هایی از انواع ترکیبی هستند.نکته: در آینده و با مثالهای بیشتر، انواع داده های مختلف را بیشتر و دقیقتر خواهیم شناخت.خلاصه این بخشدر این بخش با انواع داده‌ای اصلی در برنامه‌نویسی آشنا شدیم، خوندیم که محدودیتها و امکاناتی برای هرکدام از داده‌ها وجود داره که این موضوع به زبان مورد استفاده هم بسیار وابسته است.</description><category>سعید</category><author>سعید</author><pubDate>Tue, 21 Apr 2020 02:49:54 +0430</pubDate></item><item><title>یادگیری برنامه نویسی، آشنایی با رابط کاربری و متغیرها</title><link>https://virgool.ir/@iclick.cmp/یادگیری-برنامه-نویسی-آشنایی-با-رابط-کاربری-و-متغیرها-gb9nunmba0yc</link><description>در پست قبلی کمی در مورد چیستی دستورات و سینتکس( و گرامر) صحبت کردیم، در این بخش میخواهیم خیلی خلاصه در مورد چگونگی ارتباط برقرار کردن کاربر با برنامه صحبت کنیم(رابط کاربری) و سپس با مثالهایی مفهوم متغیر و ثابتها را کمی دقیقتر شرح خواهیم داد.رابط کاربری چیست؟خب، شما که الان این مطلب رو میخونید دارید با رابط کاربری وبسایت virgool.io ارتباط برقرار میکنید، وقتی گوشی خود رو باز میکنید دارید با رابط کاربری اندروید کار میکنید، وقتی play store رو باز میکنید هم رابط کاربری play store رو میبینید، پس با این اوصاف رابط کاربری یک نرم افزار درواقع بخشی از نرم افزار است که به شما امکان میدهید به نرم افزار دستور بدهید کاری برایتان انجام دهد یا نرم افزار از طریق آن پیغامهایش را برای شما نشان میدهد.اکثر نرم افزارهای موجود در بازار دارای رابط کاربری گرافیکی هستند، یعنی رابط خود رو با المانهای بصری و گرافیکی ارائه میدهند، اما همه نرم‏افزارها اینگونه نیستند، برخی نرم‏افزارها رابط کاربری گرافیکی ارائه نمیدهند بلکه تنها در محیط متنی امکان ارتباط برقرار کردن با آن وجود دارد، شما اگر لینوکس استفاده کرده باشید مطمئنا خیلی پیش آمده که اینطور نرم‏افزارها رو دیده باشید، مثلاً برنامه apt که در لینوکس امکان نصب نرم‏افزار رو ارائه میدهد، یک محیط کاملاً متنی رو ارائه میدهد. یا دستورات ویندوز برای محیط متنی آن (همان cmd یا command prompt) مثل path یا dir و... همگی در واقع برنامه های کوچکی هستند که کارهای کوچکی هم انجام میدهند.اما این پایان کار نیست، ممکن است شما نرم‏افزاری بنویسید که فقط به پیامهای صوتی جواب دهد یا ممکن است نرم‏افزاری بسازید که دستورات شما رو از دوربین بگیره. و حتی ممکنه نرم‏افزار شما ترکیبی از این رابط کاربریها رو ارائه دهد. حتی ما نوعی نرم‏افزار داریم که رابط کاربری خاصی به آنصورتی که در بالا ذکر شد ندارد، بلکه برای استفاده از آنها باید نرم افزار دیگری نوشت تا درخواستهای ما رو به آن ارسال کرده و جوابش رو برای ما بگیره.نکته: تقریباً همه آموزشهای مبتدی برنامه نویسی ابتدا از محیط متنی آموزش داده میشود.در رابطهای کاربری مبتنی بر متن، معمولاً برنامه منتظر میماند تا کاربر دستوری صادر کند یا مقداری را وارد کند تا بسته به آن عملیاتی انجام دهد، در رابطهای گرافیکی معمولاً دکمه ها و کادرهای مختلفی برای صدور دستورات یا وارد کردن مقادیر وجود دارد.متغیر(variable)ها و ثابت(const)هافرض کنید قرار هست برنامه‏ای بنویسیم که 3 عدد را پشت سرهم گرفته و میانگین آنها را چاپ کند، خب در این برنامه ما نیاز داریم تا اعدادی که کاربر وارد میکند رو در مکانهای خاصی ذخیره کنیم تا بعداً آنها رو برای محاسبه میانگین استفاده کنیم، درواقع به مفسر/کامپایلر زبان برنامه نویسیمون دستور میدیم که برای مکانی از حافظه کامپیوتر اسمی گذاشته و آنرا برای نگهداری مقادیر مورد نظر ما رزرو کند، که اصطلاحاً به اون متغیر میگوییم. پس با این اوصاف، به صورت ساده متغیر مکانی از حافظه است که اطلاعات مد نظر مار رو به صورت موقت نگهداری میکند، برای راحتی دستیابی به آن قسمت از حافظه اسمی هم برای اون در نظر میگیریم. مثلا برنامه ساده زیر رو در نظر بگیرید:x=3&#xA;y=7&#xA;z=x*yدرست حدس زدید، مقدار 21 در z ذخیره خواهد شد، در اینجا x,y و z هرکدام اسمی هستند که توسط زبان برنامه نویسی و به دستور ما روی قسمتی از حافظه داده میشود تا بتوانیم به راحتی اطلاعاتی در آنها ذخیره یا واکشی کنیم.خب نمونه کد میانگین سه عدد در پایتون به شکل زیر هست:a=int(input())&#xA;b=int(input())&#xA;c=int(input())&#xA;print((a+b+c)/3)در این برنامه سه بار int(input()) استفاده شده، در اینجا فعلاً همینقدر یاد میگیریم که این دستور(در یک محیط کاربری متنی) عددی از کاربر گرفته و آنرا درجایی استفاده میکند. پس دستور a=int(input()) درواقع عددی از کاربر گرفته و آنرا در متغیر a قرار میدهد. این برنامه سه عدد از کاربر گرفته و آنها را در a,b,c ذخیره کرده و در نهایت مقادیر آنها رو باهم جمع کرده و بر سه تقسیم میکند تا بتواند میانگین آنها رو چاپ کند، دستور: print((a+b+c)/3).معمولا، هنگام برنامه نویسی برای اینکه بتوانیم از متغیرهای استفاده کنیم ابتدا باید اونها رو معرفی کنیم و سپس استفاده کنیم، یعنی به برنامه بگوییم مکانی از حافظه رو مثلاً به اسم myNum رزرو کن، که در ادامه مقداری در آن ریخته شود.زبانهای مختلف استراتژی و دستورات متفاوتی برای معرفی متغیرها بکار میبرند، مثلاً در پایتون کافی است به شکل زیر عمل کنیم:name_of_variable = value   در اینجا name_of_variable یعنی نام متغیر و value همان مقداری است که در متغیر ذخیره میشود. مثلا اگر بخواهیم متغیری به اسم n ذخیره کنیم که در ابتدا عدد 24 رو در خود نگهداری کند به شکل زیر عمل میکنیم:n = 24یا برای اینکه متغیری به اسم name بسازیم که مقدار &#34;hassan&#34;  رو در خود ذخیره کند به شکل زیر عمل میکنیم:name = &#34;hassan&#34;اما زبانهای دیگر ممکن است روشهای دیگری برای معرفی متغیر داشته باشند، مثلا در زبانهای خانواده سی (یا آنهایی که گرامر آنها خیلی شبیه به سی هست) مثل c، سی پلاس پلاس، جاوا، سی شارپ و ... به شکل زیر عمل میشود:data_type  variable_name;که در اینجا data_type نوع داده ای است که باید در متغیر ذخیره شود( عدد، متن یا ...) و variable_name نام متغیر است. پس تفاوت جالبی بین پایتون و زبانهای خانواده سی وجود دارد، در پایتون اولین مقداردهی به متغیر به منزله تعریف اون هست اما در زبانهای خانواده سی حتماً ابتدا باید متغیر را برای کامپایلر تعریف کرده و سپس امکان مقداردهی به اون وجود خواهد داشت.حالا دو مثال بالا رو که به زبان پایتون نوشتیم رو بار دیگر با زبان سی شارپ مینویسیم:int n;&#xA;n=24;متغیری به اسم n با نوع داده ای int(همان عدد صحیح) تعریف کرده و در خط بعدی عدد 24 رو در اون ذخیره میکنیم.این برنامه رو به شکل زیر هم میتوان نوشت:int n = 24;یا تعریف متغیری به اسم name که مقدار &#34;hassan&#34; رو در خود ذخیره کند در سی شارپ به شکل زیر است:string name;&#xA;name = &#34;hassan&#34;نکته: در بخش بعدی با مفهوم نوع داده آشنا خواهیم شد، در همانجا با مفهوم کلمات int و string که هرکدام یک نوع داده‏ای خاص هستند آشنا خواهیم شد.نکته: در این مجموعه آموزشی، زبان پایتون به دلیل سادگی ذاتی که دارد به عنوان زبان اصلی اموزشی انتخاب شده است اما گاه شاید برای نشان دادن تفاوتها و درک بیشتر مطلب از مثالهایی در زبانهای دیگر استفاده شود.ثابتها:متغیرها قسمتی از حافظه هستند که مقداری در آن ریخته میشود و به کمک یک اسم برای برنامه قابل دسترسی هستند، و در داخل برنامه هروقت که لازم باشد(یا دلمان بخواد) میتوانیم مقدار جدیدی در آن قرار دهیم، بالواقع امکان تغییر مقادیر ذخیره شده در متغیرها هرزمان وجود دارد. مثلا در پایتون داریم:a = int(input())&#xA;b=24&#xA;c= a+b&#xA;a=0&#xA;b=0مثلا در تکه کد بالا، متغیری به اسم a ساخته شده و عددی که کاربر وارد میکند در آن ذخیره میشود، سپس متغیری با مقدار 24 به اسم b ساخته شده و به دنبال آن متغیری به اسم c ساخته میشود که حاصلجمع a+b در آن ریخته میشود، در نهایت مقدار متغیرهای a,b هر دو به 0 تغییر میابند. چنانچه میبینید امکان تغییر مقادیر متغیرها در آینده وجود دارد.ثابتها شبیه به متغیرها هستند، با این تفاوت که دیگر امکان تغییر آنها در آینده وجود ندارد، یعنی یک بار با یک مقدار ساخته میشوند و تا انتهای اجرای برنامه همان مقدار را خواهند داشت، و اگر بخواهید مقدار آنرا تغییر دهید هنگام کامپایل برنامه با خطا روبرو خواهید شد. ثابتها رو میشه به دو صورت در نظر گرفت، 1- متغیرهایی که قفل میشوند تا هیچوقت امکان تغییر آنها وجود نداشته باشد. 2- اسم گذاشتن بر روی یک داده خاص. به این صورت، فرض کنید در برنامه ای قرار است مکررا  در محاسباتمون از عدد پی (3.14) استفاده کنیم مثل برنامه زیر:r=4&#xA;c= 3.14 * r + (3.14 / 2)&#xA;k=c +r&#xA;f = k * 3.14حالا فرض کنید در نسخه بعدی برنامه کارفرما بخواهد دقت عدد پی رو دو رقم بیشتر کنیم، اونوقت باید همه 3.14 ها رو در کد برنامه پیدا کرده و به 3.1415 تغییر بدیم، که اگر در برنامه اصلی مثلا 30 بار از اون استفاده شود کار دشوار و وقت گیری خواهد بود، حال همون برنامه رو به شکل زیر مینویسیم:PI=3.14&#xA;r=4&#xA;c= PI*r+(PI/2)&#xA;k=c+r&#xA;f=k*PIدر اینجا PI رو به عنوان یک ثابت معرفی کردیم که مقدار 3.14 رو در خودش نگه میداره، اگر در نسخه بعدی برنامه قرار باشد عدد پی رو با دو رقم دقت بیشتر استفاده کنیم کافیست در تعریف ثابت مقدار اون رو 3.1415 تعیین کنیم، و دیگر نیازی به پیدا کردن همه 3.14 ها و تغییر دادنشون وجود ندارد. در پایتون تعریف ثابت و متغیر به یک شکل است با این تفاوت که اسامی ثابتها کلاً با حروف بزرگ نوشته میشود.خلاصه این بخش:در این بخش ابتدا با مفهوم رابط کاربری و انواع آنها به صورت مختصر آشنا شدیم، در ادامه خواندیم که برای اینکه بتوانیم مکررا از مقادیر استفاده کنیم باید اونها رو در مکانهایی حافظه ذخیره کنیم به این مکانهای حافظه اسامی ای داده میشود که بتوان به راحتی بهشون دسترسی داشت که اصطلاحاً به اونها متغیر گفته میشود، در انتها نیز فهمیدیم نوع خاصی از متغیر وجود دارد که فقط امکان مقداردهی در زمان تعریف رو دارند و دیگر در طول برنامه نمیشود اونها رو تغییر داد که اصطلاحاً به اونها هم ثابت میگویند.</description><category>سعید</category><author>سعید</author><pubDate>Fri, 10 Apr 2020 04:36:42 +0430</pubDate></item><item><title>یادگیری برنامه نویسی، شروع</title><link>https://virgool.ir/coderlife/learn-programming-qs49ekwkcv1c</link><description>با سلام و تبریک سال نو؛ در پست های قبلی در مورد برنامه نویسی و شروع یادگیری برنامه نویسی مطالبی گفته شد. در این پست و مطالب بعدی سعی میکنم   خواننده رو با مفاهیمی که هنگام نوشتن یک برنامه مورد نیاز است آشنا کنم به امید اینکه دیدگاه مناسبی از برنامه نویسی در ذهن شما خواننده محترم شکل بگیرد.همانظور که در پستهای قبلی اشاره شده بود، برای یادگیری هرچه بهتر برنامه نویسی باید الگوریتم نویسی رو یاد گرفته و مدام تمرین کنید، بهترین تمرین برای تازه کارها شروع به نوشتن یا تصور یک الگوریتم برای اتفاقات مجاور خود هست، میتوانید راه حلهای انواع مختلف مسايلی که باهاشون روبرو میشوید رو به صورت الگوریتم بنویسید و سعی کنید تصور کنید اگر قرار بود مجموعه ای از مراحل رو به ترتیب بنویسید تا یک ربات(این هم یک سیستم کامپیوتری هست) با انجام آن مراحل، یک مسأله رو براتون حل کند. مثلا تصور کنید اگر مراحلی رو برای ربات بنویسید که یک لیوان چای برایتان بیاورد چه کارهایی را باید به ترتیب انجام دهد؟ تصور کنید میخواهید دستور العملهایی پشت سر هم بنویسید که کامپیوترتون عددی از شما گرفته و توان دوم اون رو محاسبه کند و بهتون نمایش دهد، آنوقت چه مراحل و دستورالعملهایی می نویسید؟هرچند در مثالهای آتی سعی خواهم کرد با ارائه دادن الگوریتم برای حل مسأله مورد نظرمون به صورت ضمنی در مورد الگوریتمها هم صحبت کنم با اینحال در این مطلب و مطالب مرتبط بعدی هدف اصلی من توضیح مفاهیم مرتبط با کدنویسی هست. (باز موکداً به مطالعه الگوریتم و حل تمرینات مختلف مربوطه توصیه میشود، خوشبختانه در بستر اینترنت مطالب بسیاری در این مورد وجود دارد.)هر شخصی که توانایی برنامه نویسی به صورت مقدماتی را دارد با مفاهیم زیر آشنا هست و دیدگاه مناسبی نسبت به آنها دارد، بیشتر این مفاهیم در الگوریتم نویسی هم وجود دارند، در این مجموعه مطالب با مبنا قرار دادن زبان برنامه نویسی پایتون تلاش خواهم کرد مفاهیم ذیل رو توضیح دهم، ممکن است مثالهایی از دیگر  زبانها نیز مثالهایی آورده شود:۱- مفهوم دستور یا Statement ۲- مفهوم گرامر، قوانین، امکانات و محدودیتهای زبانی که قرار است با آن کد بنویسیم۳- مقادیر داده ای، انواع آنها و مفهوم متغیر و ثابت و تبدیلگرها۴- پکیج(package) یا کتابخانه(library) و فضای نام ۵- دستورات ورودی و خروجی و سایر اواع دستورات۷- عملگرها و عملوندها۶- شرط و دستورات شرطی یا کنترلی۷- حلقه های تکرار۸- توابع۹- کلاسها و اشیا۱۰- نواع خطاها و خطایابیدر ادامه و مطالب آینده به توضیح مفاهیم ذکر شده پرداخته میشود، اگر اشکالی در مطالب بود و یا پیشنهادی در جهت بهتر شدن مطالب دارید از بیان اون بسیار خوشحال میشم.۱- دستورات در برنامه نویسیاگر در مورد الگوریتم مطالعه کرده باشید بخاطر خواهید آورد که الگوریتمها مجموعه دستورالعملهایی هستند که پشت سر هم نوشته و اجرا می شوند تا یک هدف خاصی دنبال شود، همچنین به یاد خواهید داشت که این دستورالعملها باید با قوانین خاصی نوشته شوند، ترتیب و توالی در آن مهم است و هر دستورالعملی باید بدون ابهام باشد، دقیقا همین مفهوم در زبانهای برنامه نویسی ولی با قوانین دقیقتر و مستحکمتری نیز وجود دارد، یعنی شما اگر بخواهید برنامه ساده ای بنویسید که عددی از کاربر بگیرد و توان دوم آن را چاپ کند باید مثل زمانیکه الگوریتمی برای آن مینویسید دستورالعملهایی بنویسید که کامپیوتر با اجرای پشت سر هم اون دستورالعملها بتواند مقداری از کاربر بگیرد و سپس توان دوم اون رو محاسبه کرده و بعد آنرا چاپ کند. درواقع به هریک از این دستورالعملها اختصارا دستور یا statement میگوییم. حال الگوریتمی برای مسأله ذکر شده مینویسم و معادل اون رو در زبان پایتون مینویسیم:الگوریتمی که عددی از کاربر بگیرد و توان دوم آن را چاپ کند:۱- شروع۲- عدد a را از کاربر بگیر (میشد نوشت: عددی از کاربر بگیر و در a قرار بده)۳- در b  قرار بده a*a را (بهتره بنویسیم:  b &lt;- a*a)۴- چاپ کن b را۵- پایانحالا همین الگوریتم رو به زبان پایتون مینویسیم:a= int(input())b=a*aprint(b)هریک از خطوطی که در این برنامه ساده نوشته شده شامل یک یا چند دستور (statement) هستند، توضیح هریک از خطوط به شرح زیر است:خط ۱: شامل دستور ورود اطلاعات( input )، دستور تبدیل ورودی به عدد ( int ) و دستور و عملگر ساخت متغیر a   و قراردادن عدد وارد شده توسط کاربر در آن هست( =a ). در واقع در این خط ما به کامپیوتر میگیم مقداری از کاربر بگیر اون رو به عدد تبدیل کن و سپس متغیری به نام a بساز و در آن قرار بده.خط ۲: ساده هست، متغیری به نام b ساخته ( =b) و توان دوم a رو (a*a) در آن قرار بدهخط ۳: مقدار موجود در b رو در خروجی چاپ کن. (خروجی پیشفرض مانیتور میباشد) همانطور که متوجه هستید، در واقع یک دستور، درخواستی از کامپیوتر برای انجام کاری است، دستورات میتوانند باهم ترکیب شوند تا دستورات مرکب ساخته شود.نکته: دستورات نقطه آغاز و پایان دارند. در همه زبانها یک دستور یا اولین دستور است یا بعد از پایان دستور قبلی نوشته و آغاز میشود، اما نقطه پایان دستورات ممکن است در زبانهای مختلف با هم فرق کند، مثلا در زبانهای خانواده c همه دستورات با ; (سمی کلون) خاتمه می یابند ولی در پایتون هم کلید enter یعنی زدن دکمه انتر و رفتن به سطر جدید نشانه پایان دستور نوشته شده هست و هم میتوان از ; استفاده کرد.نکته: در مطالب آینده همه انواع دستورات استفاده شده در این برنامه به صورت دقیقتری معرفی و توضیح داده خواهد شد. همانطورکه دقت میکنید انواع مختلفی از دستورات در برنامه نویسی وجود دارد. در این سری آموزشی بعضی از آنها به صورت بخشهای مجزایی (مانند دستورات شرطی و یا کنترلی و ...) توضیح داده خواهند شد و برخی نیز ضمن سایر بخشها موقع نیاز مفصلا توضیح داده خواهند شد. لیست انواع دستوراتی که ممکن است در یک برنامه بکار برده شوند میتواند به شرح زیر باشد:۱- دستورات معرفی و ساخت متغیرها و انواع داده ها۲- دستورات ورودی و خروجی۳- انواع عبارتهای ریاضی و منطقی و ... (مثل این عبارت ریاضی: a=48*25، که حاصلضربی را محاسبه کرده و در متغیری قرار میدهد). باید دقت کرد ممکن است در بعضی کتب و منابع به عبارتهای این چنینی اسم دستور اطلاق نشود.۴- دستورات شرطی و کنترلی۵- دستورات ساخت حلقه های تکرار۶- دستورات کنترل و مدیریت خطا هاو....۲- مفهوم گرامر یا سینتکس (syntax) در زبانهای برنامه نویسیدر بخش قبلی با مفهوم دستورات در برنامه نویسی آشنا شدیم اما باید به یاد داشته باشیم که طرز نوشتن این دستورات ممکن است در زبانهای مختلف باهم فرق داشته باشند و هرکدام از زبانها قواعدی برای استفاده از این دستورات وضع کرده باشند حتی ممکن است اسم دستورات در زبانهای مختلف باهم فرق کند، ممکن است در یک زبانی برای دستور چاپ از کلمه print و در زبانی دیگر از echo و در زبانی دیگر از کلمه ای دیگر استفاده شود، ممکن است در زبانی انتهای هر دستور با کلید enter یا کلید ; و در زبانی دیگر از یک کاراکتر دیگر استفاده شود. به مجموعه این قوانین که توسط زبانهای برنامه نویسی وضع میشود اصطلاحاْ سینتکس یا گرامر آن زبان برنامه نویسی میگوییم. مثل زبانهای محاوره ای که ممکن است در یکی فعل آخر جمله بیاید و در یکی اول جمله. باید دقت کنیم که اگر میخواهیم با هرزبانی برنامه نویسی کنیم باید قواعد آنرو مطالعه کرده و یاد بگیریم و برای برنامه نویس شدن باید نسبت به مفاهیم اصلی مسلط شویم تا بتوانیم به راحتی هر زبانی رو یاد بگیریم.خلاصه این بخش:در این بخش با اسم برخی از مفاهیم مقدماتی برنامه نویسی آشنا شدیم، و یاد گرفتیم که هر برنامه ای هم مثل الگوریتمها مجموعه ای متوالی از دستورالعملها هست که به ترتیب از بالا به پایین اجرا میشوند تا یک هدف خاصی اتفاق بیافتد، در هریک از این دستورالعملها ممکن است از کامپیوتر بخواهیم یک یا چند کار را انجام دهد که به این درخواستها اصطلاحا دستور یا statement میگوییم. یاد گرفتیم که به مجموعه قوانینی که یک زبان برای برنامه نوشتن به آن زبان ارائه میده اصطلاحا سینتکس یا گرامر آن زبان میگوییم.ادامه دارد...</description><category>سعید</category><author>سعید</author><pubDate>Fri, 03 Apr 2020 03:26:54 +0430</pubDate></item><item><title>یادگیری برنامه‌نویسی، مفاهیم و فعالیتهای تولید نرم افزار</title><link>https://virgool.ir/coderlife/یادگیری-برنامهنویسی-آشنایی-با-مفاهیم-ابتدایی-ddylqlwtn5vw</link><description>در پستهای قبلی(درجا نزن، وارد دنیای برنامه نویسی شو!، برنامه نویسی، کمی بیشتر، کمالگرایی یا مشکل آفرینی؟ در برنامه نویسی)، بنده سعی کردم ضمن آشنایی بیشتر با مفهوم برنامه‌نویسی در مورد چالشهای یادگیری اون صحبت کنم، در اون پستها تلاش کردم به صورت انگیزشی و واقع‌گرایانه کسانی که نسبت به آموزش برنامه نویسی علاقمند هستند رو برای اینکار بیشتر ترغیب کرده و راهکارهایی برای رهایی از سختهای مسیر یادگیری ارائه دهم. در این پست و پستهای بعد از این سعی خواهم کرد بدور از دغدغه‌های مطرح و بدون اصل قرار دادن یک زبان خاص، مفاهیم ابتدایی و مقدماتی مقوله برنامه‌سازی رو توضیح بدم. امیدوارم بتوانم مسیر مفیدی برای مبتدیان نشان دهم.تعریف برنامه نویسیدر اصل برنامه نویسی، مجموعه‌ای از فعالیتهایی است که به تولید یک نرم‌افزار میانجامد، و نرم‌افزار خود مجموعه‌ای از دستورات نوشتاری (که اصطلاحاً به آنها کد می‌گوییم) است که با ترتیبی مشخص اجرا می‌شوند تا درنهایت کار[های] خاصی را انجام دهد. در یک تعریف دیگر، تبدیل فرمول حل یک مسئله به فرایندی که کامپیوتر قابل اجرای آن باشد را برنامه نویسی میگوییم.مجموعه فعالیتهای تولید نرم‌افزاردر تعریف فوق، متوجه این موضوع میشویم که تولید نرم‌افزار مشمول مجموعه‌ای از فعالیتها و مفاهیم است که انجام و سرهم بندی همه آنها درنهایت منجر به تولید نرم‌افزار می‌شود، در اینجا با این مفاهیم کمی آشنا می‌شویم.1- فعالیت مهندسی نرم‌افزار، قبل از اینکه شروع به نوشتن یک برنامه کنیم، ابتدا مسئله مربوطه را تجزیه و تحلیل کرده، نیازمندیهای آن را شناخته و سپس تیم توسعه را تشکیل داده، نحوه مدیریت تیم و چگونگی برنامه ریزی روند توسعه رو تعیین می‌کنیم و بعد از آن شروع به نوشتن برنامه مد نظر می‌کنیم، به مجموعه همه این فعالیتها &#34;مهندسی نرم‌افزار&#34; می‌گوییم که نسبت به اندازه پروژه ممکن است زمان و فعالیتهای بیشتری لازم داشته باشد، اما در مورد برنامه‌های بسیارکوچک و تمرینی(آموزشی) تقریباً همه فعالیتهای فوق بصورت ذهنی و سریع صورت می‌گیرد.2- فعالیت معماری نرم‌افزار، نرم‌افزارهای بزرگ و متوسط معمولاً از چندین بخش تشکیل شده و هر بخش هدف یا اهدافی از نرم‌افزار را تأمین می‌کنند، معماری نرم‌افزار تعیین می‌کند برنامه به چند جزء تقسیم شده و این بخشها چگونه باهم در ارتباط باشند، معماری نرم‌افزار در واقع ساختار اصلی برنامه را تعیین می‌کند و حتی تا حدودی تعیین کننده تکنیکها و تکنولوژیهای بکار رفته در تولید نرم‌افزار نیز می‌باشد. معماری نرم‌افزار و مهندسی نرم‌افزار دو مفهوم کلیدی در تولید برنامه‌های بزرگ (تجاری و صنعتی) می‌باشند. گاهی ممکن است معماری زیر مجموعه مهندسی تعریف شود و گاهی بالعکس، با این حال پرداختن دقیقتر به این مفاهیم خارج از حوصله این نوشتار می‌باشد، اما توصیه میکنم پس از یادگیری مقدمات برنامه‌نویسی حتماً این مفاهیم رو مورد مطالعه قرار دهید.3- مفهوم الگوریتم و فعالیت الگوریتم نویسی، برای نیل به هر هدفی چندین عمل پشت سر هم انجام می‌گیرد که اصطلاحا به آنها گامهای انجام یک کار می‌گوییم، برای حل یک مسئله نیز مجموعه‌ای از عملیات انجام می‌شود، اگر این عملیات را به ترتیب و پشت سرهم بنویسیم بصورتی که بتوانیم مراحل حل یک مسئله را به صورت کاملاً روشن و بدون ابهام توضیح دهیم به آن الگوریتم گفته میشود. درواقع الگوریتم مجموعه‌ای از دستورالعملهاست که به ترتیب خاصی اجرا میشوند تا مسئله‌ای را حل کنند. میتوانیم برای همه اتفاقات و کارهای روزمره‌ای که انجام می‌دهیم الگوریتمی را تصور کرده یا بنویسیم، در برنامه‌نویسی اصلیترین مهارتی که باید کسب کرد، توانایی حل مسئله می‌باشد و تمرین مداوم الگوریتم نویسی می‌تواند کمک بزرگی برای تقویت این مهارت باشد.4- فعالیت کدنویسی، پس از انجام امورات مهندسی نرم‌افزار، و تعیین معماری نرم‌افزار گروه برنامه‌نویسی شروع به نوشتن دستورالعملهایی در کامپیوتر می‌کنند که این دستورالعملها طی فرایندی تبدیل به 0-1(کدهای قابل فهم کامپیوتر) می‌شوند تا نرم‌افزار نهایی تولید گردد. نوشتن الگوریتم در اصل یک گام قبلتر از کدنویسی می‌باشد، اما در عمل برنامه‌نویسان حرفه‌ای معمولاً فقط برای مسائل سخت اقدام به نوشتن الگوریتم برروی کاغذ می‌کنند، و برای مسائل راحت‌تر یا تکراری الگوریتم را سریع و در ذهن خود تداعی می‌کنند. درواقع برای برنامه‌نویس شدن هم باید آنقدری تمرین کرد که بتوان خیلی سریع برای بسیاری از مسائل یک الگوریتمی تصور کرد.5- مفاهیم زبان برنامه نویسی، کامپایلر و مفسر، همانطور که در بخش قبل توضیح داده شد، برنامه‌ها درواقع دستورالعملهایی هستند که در کامپیوتر نوشته می‌شوند و در نهایت تبدیل به زبان قابل فهم کامپیوتر می‌شوند، حال سوال این است که، این دستورالعملها چی هستند؟ چه کسی آنها را تعیین کرده و توسط چه چیزی تبدیل به کدهای قابل فهم کامپیوتر(0-1) میشوند؟ زبان برنامه‌نویسی، درواقع یک ابزار نرم‌افزاری‌ای است که مجموعه‌ای از دستورالعملهای استاندارد شده را در اختیار شما قرار می‌دهد که بتوانید با نوشتن آنها به ترتیب خاص، یک نرم‌افزاری رو تولید کنید. این دستورالعملها معمولاً بسیار نزدیک به زبان محاوره‌ای ما(انگلیسی) می‌باشد، که توسط کامپایلر یا مفسر به زبان قابل فهم کامپیوتر(0-1) تبدیل می‌شود. پس با تعاریف ارائه شده، کامپایلر یا مفسر، ابزاری هستند که کدهای نوشته شده با یک زبان برنامه نویسی را تبدیل به کدهای صفر و یک قابل فهم برای کامپیوتر می‌کنند، فرق بین کامپایلر و مفسر در این است که مفسر دستورات را خط به خط تبدیل کرده و اجرا می‌کند، حال آنکه کامپایلر ابتدا همه کدهای نوشته شده را یکجا تبدیل کرده و سپس برنامه را اجرا میکند.6- فعالیت تست نرم‌افزار، بعد از اینکه برنامه نوشته شد، باید بتواند در زمان بهره‌برداری امور مربوطه رو به درستی و با صرف هزینه‌ای قابل قبول انجام دهد، برای برآورده شدن این هدف، باید از همان ابتدای نوشتن برنامه، بخشهای مختلف نوشته شده مورد آزمون قرار گیرند تا اشکالات احتمالی رفع گردند، تست نرم‌افزار سطوح، روشها و مراحل مختلفی دارد.7- نصب، بعد از اینکه نرم‌افزار تولید و آماده بهره‌برداری شد باید بتواند روی کامپیوتر مقصد اجرا شود و همچنین کاربر بتواند از آن استفاده کند، لذا نصب را می‌توان شامل تهیه یک ابزاری/هایی برای نصب نرم افزار روی کامپیوتر مقصد، آموزش کاربران نرم افزار و تدوین یک برنامه برای پشتیبانی و رفع مشکلات احتمالی است که ممکن است در آینده رخ دهد.برنامه آموزشی مقدماتیاز آنجایی که برنامه‌نویسی درواقع حل یک مسئله و توانایی تبدیل فرایند حل مسئله به یک نرم‌افزار می‌باشد، پس مهمترین مهارتهایی که برای برنامه نوشتن نیاز است، یادگیری روشهای مختلف حل مسئله و تبدیل آن راه‌حلها به صورت قابل فهم کامپیوتر می‌باشد. یادگیری الگوریتم نویسی و تمرین و ممارست در آن میتواند قدرت حل مسائل شما و مهارت شما را در تبدیل حل مسئله به شکل قابل فهم کامپیوتر، افزایش می‌دهد، شما باید نحوه جریان اطلاعات در کامپیوتر، کدبندی داده‌ها  و مفاهیم ابتدایی ریاضی ازجمله مبناهای عددی را یاد گرفته و صاحب مهارت کافی باشید. با مطالعه کتابهای مربوط به مبانی کامپیوتر شما با مفاهیم اولیه کامپیوتر و مبناهای عددی آشنا خواهید شد، برای یادگیری الگوریتم‌نویسی هم کتابهای مختلفی در بازار موجود است که میتوانید تهیه کنید، کتابهای بیشماری نیز وجود دارد که میتوانید از روی آنها زبانهای مختلف برنامه نویسی را یاد بگیرید.اهداف آیندهاگر فرصت باشد و خدا قوتی دهد، در پستهای بعدی سعی خواهم کرد مفاهیم ابتدایی کدنویسی و الگوریتم نویسی رو توضیح دهم، تا خوانندگان بتوانند بدون وابستگی به یک زبان برنامه نویسی خاص بامفاهیم کلی آشنا شده و توانایی حل مسائل ابتدایی را بدست آورند، هرکسی بعد از آموزش مفاهیم اولیه و کسب مهارت در حل مسئله، میتواند در زمینه مورد علاقه خود شروع به فعالیت کرده، مفاهیم مربوطه را یادگرفته و اقدام به تولید نرم‌افزار در زمینه مورد نظر خود کند.</description><category>سعید</category><author>سعید</author><pubDate>Wed, 01 Jan 2020 15:39:29 +0330</pubDate></item><item><title>کمالگرایی یا مشکل آفرینی؟ در برنامه نویسی</title><link>https://virgool.ir/coderlife/کمالگرایی-یا-مشکل-آفرینی-در-برنامه-نویسی-numky8waqzz8</link><description>اصولا ما انسانها به صورت ذاتی علاقه‌ داریم بهترینها را داشته باشیم، بهترین‌ها را انجام دهیم و یا بهترین‌ها را یاد بگیریم، اما آیا واقعاً با وجود حساسیت و وسواسی که به خرج می‌دهیم بهترینها را به دست می‌آوریم؟، با کمی دقت شاید همه به نتیجه برسیم که نه معمولاً چنین نیست! آیا غیر از وسواس، تحقیق و تفحص و صرف زمان راه دیگری نیست که اتفاقات خوب برایمان رقم بخورد!؟باید همواره فراموش نکنیم که اگر مهمترین و باارزشترین دارایی ما زمان نیست مطمئناً زمان یکی از مهمترین دارایی‌های ماست، پس اصولاً باید در صرف وقت وسواس به خرج دهیم تا حدالمقدور از اتلاف بیجای آن جلوگیری کنیم، متاسفانه کمالگرایی ما را مجبور به صرف زمان بیشتر برای نیل به هدفی غیر ضروری و حتی گاهاً زاید، می‌کند.در مقوله برنامه‌نویسی در دو بحث مختلف دچار کمالگرایی اضافی می‌شویم، یک در موقع یادگیری و دو، در زمان انجام پروژه‌ برای کارفرما، در ادامه در مورد هرکدام به صورت مختصر بحث می‌کنیم.کمالگرایی در یادگیری برنامه نویسیمعمولاً، وقتی کسی شروع به یادگیری برنامه‌نویس می‌کند (یا می‌خواهید شروع به یادگیری کند)، با سوالات زیادی روبرو هست که مطمئنا در یافتن پاسخ به هرکدام با مشکلات و مسائل زیادی روبرو خواهد شد، و متاسفانه در بیشتر مواقع به جواب درستی نخواهد رسید(چون اصولاً بیشتر این سوالات جواب قاطعی ندارند) و باز متاسفانه در این شرایط فرد دچار کمالگرایی (گاهاً در حد افراطی) هم می‌شود، برخی سوالات که ممکن است این شخص با آن مواجه شود به این صورت است:1- برای یادگیری برنامه نویسی چه پیشنیازهایی لازم است؟، خب این سوال راحت‌ترین سوال در این زمینه هست، اما ممکن است در مقالات و سایتهای مختلف این پیشنیازها را به سبک‌های گوناگون توضیح دهند که این باعث سردرگمی شما شود، اما جواب این سوال در حقیقت خیلی ساده است: شما باید مقدمات کامپیوتر رو یاد بگیرید، نحوه کدینگ اطلاعات، انواع کدها در کامپیوتر و کار با مبناهای عددی مختلف و نحوه تبدیل به آنها را یاد بگیرید، حتماً اصول ابتدایی الگوریتم نویسی و فلوچارت رو یاد بگیرید(غیر از نیازهای اولیه یادگیری، در خیلی از مقالات و مطالب متوسط و پیشرفته علوم داده از شبه‌کدها و اشکال فلوچارت برای توضیح استفاده می‌شود)، سعی کنید یاد بگیرید برای مسائل مختلف روزمره و ریاضی الگوریتم بنویسید.2- با کدام زبان شروع کنم، این سوال سخت‌ترین، پیچیده ترین و بی‌پاسخترین سوالات است، حتی خیلی از کسانی که تجربه سالها برنامه‌نویسی دارند نیز واقعاً مطمئن نیستند کدام زبان بهترین هست، خیلی از برنامه نویسان هستند که بعد از مثلاً 10 سال کار کردن با یک زبان، به زبان دیگری مهاجرت می‌کنند، متأسفانه اکثراً افراد به همان دلیل میل به کمال که دارند خیلی در این سوال معطل شده و متاسفانه زمان بسیار زیادی از دست می‌دهند، یک پیشنهاد این است که بجای این همه سوال و گشت و گذار توی صفحات مختلف، با کمک گرفتن از یکی از افراد و دوستان برنامه‌نویسی که بهش دسترسی دارید شروع به یادگیری همان زبانی بکنید که اون شخص با آن کار می‌کند، باور کنید اگر مفاهیم پایه برنامه‌نویس رو خوب یاد بگیرید براحتی می‌توانید به زبان دیگری کوچ کنید، اینطور حداقل صرفه‌جویی زیادی از لحاظ زمانی می‌شود و بجای درگیری با پاسخهای بیشمار و معمولاً بیفایده‌ای که برای تشریح انتخاب زبان در اینترنت وجود دارد، شما یک زبان را یاد گرفتید و حتی می‌توانید با آن زبان به کسب درآمد هم برسید. (شما خواننده گرانقدر هم اگر هر پیشنهادی دارید خواهشمندم اون رو کامنت کنید)3- کدام پلتفرم، کدام حیطه و زمینه؟ خب این رو چرا از دیگران می‌پرسید، در اینجا بیشتر علاقه(شما بخونید فانتزی‌های ذهنی) هرکس هست که باعث انتخاب یک زمینه کاری خاصی می‌کند، خودتون فکر بکنید ببینید به چی علاقه‌مندید، چه توانایی‌هایی دارید و حوصلتون در چه حدی هست! لطفا، کمالگرا نباشید همه این زمینه‌ها آنقدر درآمدزا هستند که بتواند راضیتان کند، ویژگیهای ذهنی و خلقی خودتون رو در نظر بگیرید مثلاً بنده حوصله درگیری با محاسبات ریاضی برای تولید سایه ندارم، پس کمتر به سمت برنامه‌نویسی گرافیک و سه بعدی می‌رم، به بانک اطلاعاتی و کار با داده‌ها علاقمند هستم، پس به سمت برنامه‌نویسی بانکهای اطلاعاتی می‌روم، اگر عمیقاً دچار این سوال شوید کار شما خیلی سخت خواهد شد، حتی سخت‌تر از یافتن پاسخ به سوال دوم، تعداد زمینه‌ها و تکنولوژیهای موجود در برنامه نویسی آنقدر زیاد هست که فقط مطالعه کردنشون ممکن است تا پایان عمر یک نفر هم زمان نیاز داشته باشه، حالا خودتون فکر کنید کمالگرایی در اینجا چقدر ممکنه گرفتارتون کنه، باز پیشنهاد اینه که با همین یک دوتا زمینه عمومی و دردسترس شروع کنید، مطمئن باشید در ادامه با اشخاص، پروژه‌ها و موقعیتهایی روبرو خواهید شد که شما رو به سمتی که بسیار از کار کردن در اون زمینه لذت می‌برید سوق خواهد داد.کمالگرایی در زمان نوشتن برنامهبعد از اینکه در برنامه‌نویسی پیشرفت کرده و توانایی انجام مستقل پروژه‌های مختلفی رو پیدا میکنید نیز ممکن است با کمالگرایی مواجه شوید، اینجا کمالگرایی بسیار خطرناک است، حتی ممکن است آینده کاری شما رو تحت تأثیر قرار دهد، ممکن است پرستیژ شما رو به شدت پایین آورده و از اعتبارتون بسیار بکاهد! دیگر در بین اجتماع آن اعتمادی که به شما وجود داشت از بین می‌رود، اما همه اینها چرا اتفاق می‌افتند؟ جواب ساده است: اتلاف وقت و بدقولی حاصل از کمالگرایی. همه ما چه برنامه‌نویسان حرفه‌ای و چه متوسط و مبتدی باید به یاد داشته باشیم، مهمترین چیزی که برای کارفرما وجود دارد زمان است، مطمئن باشید اگر پروژه رو 10 روز سریعتر تحویل دهیم کارفرما خیلی بیشتر لذت خواهد برد تا اینکه که اون رو 10 روز دیرتر اما با 10 امکان جدید و پیش‌بینی نشده تحویل دهیم، فراموش نکنیم بیشتر مفاهیم و امکاناتی که ما می‌دانیم در برنامه می‌تواند باشد رو کارفرما نمی‌داند همه اینها رو باید قبل از تأیید نهایی قرارداد با کارفرما صحبت کرد و اگر تأیید شد اون رو به قرارداد اضافه کرد، در این صورت باید زمان انجام پروژه نیز به نسبت امکانات ذکر شده در قرارداد تنظیم شود، و باید بعد از شروع کد نویسی دیگه هرنوع کمالگرایی و بهترین خواستن رو کنار بگذاریم، تنها چیزهای که باید بر روی آن تمرکز کنیم تعهد به زمان تحویل پروژه و تعهد بر نوشتن کد خوب و حدالمقدور بهینه است(بهینگی رو موضوع پروژه و دایره عملیاتی محصول نهایی تعیین می‌کند)، باید از نوشتن کدهای اضافی، امکانات اضافی و پیشبینی‌های اضافی برای آینده بر حذر باشیم، بجای پیش‌بینی افراطی برای آینده بهتر است از یک معماری بهینه استفاده کنیم که بتوانیم در آینده امکانات جدید رو به راحتی بدان اضافه کنیم.</description><category>سعید</category><author>سعید</author><pubDate>Tue, 24 Dec 2019 14:55:30 +0330</pubDate></item><item><title>برنامه نویسی، کمی بیشتر</title><link>https://virgool.ir/fboard/برنامه-نویسی-کمی-بیشتر-ujawnxd5y5qy</link><description>تقریباً همه افرادی که در جامعه کنونی زندگی می‌کنند کم و بیش واژه برنامه‌نویسی رو یا شنیدند و یا اطلاعاتی در مورد آن دارند، تصور اکثر کسانی که برای یادگیری برنامه‌نویسی مراجعه می‌کنند این است که برنامه نویسی در مجموع کشیدن یک کلید(button) به صفحه یا کشیدن یک کادر متن به صفحه و تعریف وظایفی برای هرکدام است، به همین دلیل، برخی از آنها از آموزشهای ابتدایی که در واقع بمنظور فراگیری الگوریتم نویسی و افزایش قدرت تحلیل و حل مسئله بیان می‌گردد خسته می‌شوند، حرفه برنامه‌نویسی مانند بسیاری از حرفه‌ها نیازمند آموزش‌های ابتدایی، یادگیری الفبا و افزودن بر مهارت هست، در این نوشته قصد داریم کمی بیشتر با خود مفهوم برنامه نویسی آشنا شویم و در نهایت توصیه‌هایی نیز برای یادگیری آن ارائه دهیم. در ویکی پدیای فارسی برنامه نویسی را چنین تعریف می‌کند:&#34;برنامه‌نویسی رایانه (به انگلیسی: Computer Programming) (یا به اختصار برنامه‌نویسی) به‌طور کلی به فرایند نوشتن و توسعه نرم‌افزار کامپیوتر گفته می‌شود. به بیان جزئی‌تر برنامه‌نویسی رایانه به معنای فرایند تبدیل و سوق دادن فرمول حل یک مسئله یا الگوریتم محاسباتی، به یک برنامه قابل اجرا (نرم‌افزار) می‌باشد.&#34;از این تعریف می‌توان دریافت که در واقع نوشتن برنامه در ابتدا درک مسئله‌ یا مشکلی است که برنامه باید آنرا حل کند، ساخت یک روند منطقی برای حل آن مسئله(نوشتن الگوریتم) و در نهایت تبدیل آن به یک روند منطقی قابل فهم برای کامپیوتر است.باید این نکته رو به یاد داشته باشیم که در ابتدا(در اصل) برنامه نویسی برای حل مسائل ریاضی بوجود آمده است، و هم‌اکنون نیز بسیاری مسائل و منطق‌های ریاضیاتی وجود دراند که موضوع بحث محافل دانشگاهی و صنعتی می‌باشند که مهندسان کامپیوتر در تلاشند برای آنها راه‌حل کامپیوتری بوجود بیاورند یا روشهای قدیمی رو بهبود بخشند، نرم‌افزارهای گرافیکی، آماری، هوش مصنوعی و... نمونه‌های کاملاً مرتبط با ریاضیات هستند و مطمئناً داشتن هوش ریاضی(نه الزاماً از قبل یاد گرفتن ریاضیات تا آن حد) و قدرت حل مسئله قوی می‌تواند در پیشرفت برنامه نویس در آن حوزه‌ها تأثیر مثبت زیادی بگذارد. برخلاف تصور عموم، برنامه نویس حرفه ایتر برنامه نویسی است که بتواند مسائل سخت را حل کند، ریاضیات کم و بیش در همه زمینه‌های برنامه نویسی کاربرد دارد، در برخی ،مفاهیم پایه‌ای و ساده ریاضیات، در برخی، هم مفاهیم پایه‌ای و هم مفاهیم پیشرفته‌تر نیاز هست.چون اکثر ما با برنامه های کاربردی سر و کار داریم ممکن است تصورمان از برنامه نویسی تنها در حد ترسیم چند کلید و کادر ورود مقادیر و کمی هم کد نویسی برای ارتباط بین آنها باشد، اما در اصل واقعاً اینطور نیست، با یک دیدگاه ساده و ابتدایی باید گفته شود که در یک برنامه ما درواقع قسمتی برای ایجاد ارتباط با کاربر(ظاهر یا محیط کاربری برنامه- FRONTEND)، و بخشی نیز برای کدهای اصلی و اجرایی برنامه (بخش پشت صحنه- BACKEND )داریم، همچنین ابزارها و محیطهایی برای نوشتن و ساخت این بخشها وجود دارد.یک سبک برنامه‌نویسی ابتدایی (و نه اصولی) این است که همه بخش backend و frontend برنامه در یکجا و به صورت به هم تنیده نوشته شود، حتی در سالهای نه چندان دور بسیاری از برنامه‌نویسان متوسط و مبتدی  بیشتر با همین سبک برنامه می‌نوشتند آنها با کمک ابزارهایی یک صفحه (فرم) از برنامه را طراحی می‌کردند و در همانجا نیز کدهای بخش backend را هم می‌نوشتند باید باخبر شوید که این سبک و حیطه برنامه‌نویس(ویژوال، مثل دلفی، ویژوال بیسیک، WINfORMS در دات نت و ...) روز به روز محبوبیت خود را از دست می‌دهد، حتی  پلتفرمهای جدیدتر طوری طراحی می‌شوند که مجبورتان کنند از این سبک برنامه‌نویسی دوری کنید،  نوشتن نرم‌افزار برای محیطهای آنلاین و تحت وب روزبه روز محبوبتر شده و سرمایه‌گذاری بیشتری روی آن انجام می‌شود، حتی برای نرم‌افزارهای دسکتاپی(قابل اجرا روی کامپیوتر محلی) و یا موبایل نیز برنامه نویسان بیشتر از ابزارها و امکانات نوشتاری استفاده می‌کنند، استفاده از تکنولوژیهای وب برای ساخت INERFACE  در نرم‌افزارهای محلی نیز برای خود جای بزرگی باز کرده، پس در سبک برنامه نویسی مدرن نوشتن بخشهای backend و frontend کاملاً از هم جدا شده و حتی هرکدام سبکها و مهارتهای خاص خود را می‌طلبند، هنگام ساخت نرم‌افزاراهای بزرگ برای هرکدام از بخشهای backend و frontend تیم یا تیم‌های مستقلی تدارک دیده می‌شود.امروزه برنامه‌نویسی تقریباً در همه امورات جاری ما انسانها رسوخ کرده، لباسها و گجتهای کنترل سلامت، ابزار ارتباط همگانی، اینترنت، هوش مصنوعی، رباطها، سیستمهای کنترل امنیت و هویت سنجی، بانکهای اطلاعاتی، ابزارهای تحلیل بازار و علوم اجتماعی و پزشکی  و... در همه اینها به همراه سخت‌افزارهای استفاده شده نقش اصلی رو علوم مربوط به برنامه‌نویسی ایفا می‌کنند، هرکدام اصولیتر و دقیقتر برنامه‌نویسی شده باشند بهتر و سریعتر به نیازها پاسخ خواهند داد، شما به عنوان یک مبتدی با گزینه‌های مختلفی برای شروع یادگیری مواجه خواهید بود که ممکن است موجب سردرگمی یا حتی ترس و دوری از یادگیری شود، اما خبر خوش این است که قضیه چنانکه فکر میکنید سخت نیست، تنها نیاز برای برنامه نویس شدن شروع یادگیری یک زبان برنامه‌نویسی و روشهای حل مسئله است، لازم هم نیست برای انتخاب زبان وسواس به خرج دهید، چیزی که اهمیت دارد یادگیری الگوریتم نویسی و توانمند شدن در حل مسائل و تطابق دادن راه‌حلها با منطق کامپیوتر است، کافی‌است به طور روزانه تمرین کنید و سعی کنید در ذهن یا کاغذ اتفاقاتی که در اطرافتان واقع می‌شود را به منطق قابل فهم کامپیوتر(الگوریتم) تبدیل کنید. این تمرین کمک می‌کند تا راحت‌تر ذهنتون را با منطق کامپیوتر تطبیق دهید و درک درست‌تری از روند نوشتن برنامه را برای شما مهیا می‌کند، که در نهایت باعث می‌شود برنامه‌نویسی را سریعتر و راحت‌تر یاد بگیرید، گذر از این مرحله، شما رو قادر می‌کند به سرعت و با زحمت کمتری هر زبان و تکنولوژی برنامه‌نویسی رو یاد بگیرید.نتیجه گیریبرنامه‌نویسی در واقع داشتن مهارت در تحلیل درست یک مسئله، یافتن یک راه حل منطقی(با فرض اینکه منطق ریاضیات هست نه فلسفه) برای آن، و درنهایت تبدیل آن منطق به صورتی هست که برای کامپیوتر قابل فهم باشد، است. این مفهوم در بسیاری از امورات روزمره ما رسوخ کرده و درواقع تأثیر قابل درک و زیادی در سبک زندگی ما دارد، اگر تمرین کنیم و نسبت به درک  اصول کامپیوتر و حل مسائل به صورت منطقی قابل فهم کامپیوتر مهارت پیدا کنیم به راحتی می‌توانیم برنامه‌نویسی رو یاد بگیریم و وقتی اصول آنرا یادگرفتیم و مهارت کافی داریم به راحتی میتوانیم زمینه کاری یا زبان برنامه‌نویسی مورد استفاده‌مان را تغییر دهیم. پس در ابتدا نیاز است که مفاهیم پایه‌ای رو با دقت یاد بگیریم و سپس تمرین کنیم تا بتوانیم راه‌حلهایی برای حل مسائل ساده و به تدریج پیشرفته‌تر ریاضیات توسط کامپیوتر رو پیدا کرده و بنویسیم. سپس میتوانیم در زمینه‌های مختلف ورود کرده و در هرکدام که نیاز است(یا مورد علاقه‌مان است) حرفه‌ایتر شویم.</description><category>سعید</category><author>سعید</author><pubDate>Sun, 22 Dec 2019 15:17:33 +0330</pubDate></item><item><title>چند توصیه برای راه‌اندازی وبسایت</title><link>https://virgool.ir/@iclick.cmp/website-xmoafvfkldl6</link><description>با گسترده شدن شبکه اینترنت و تأثیر قابل ملاحظه اون بر تجارت و روشهای نوین بازاریابی و تبلیغ محصولات، صاحبان مشاغل بزرگ و کوچک به طور فزاینده‌ای برای بهره‌مند شدن از مزایای  این تکنولوژی تشویق می‌شوند، برخی به فعالیت در شبکه‌های اجتماعی، برخی به داشتن اپ‌های اختصاصی موبایل و برخی به داشتن وبسایت اختصاصی گرایش پیدا میکنند. از بین سه روش ورود به تجارت تحت وب، راه‌اندازی وبسایت اختصاصی برای کسب و کار خود هم از قدمت بیشتری برخوردار است و هم به نظر بسیاری از افراد پرستیژ و حس تملک بیشتری دارد، به همین دلیل افرادی که در شبکه‌های اجتماعی فعال هستند و یا نرم‌افزار اختصاصی دارند نیز به داشتن وبسایت ترغیب می‌شوند. دغدغه‌ای که در اینجا ممکن است برای صاحبان مشاغل بوجود آید این است که وب‌سایتشان را چگونه، به دست چه کسی و با بهره‌مندی از چه تکنولوژی‌هایی پیاده سازی کند؟قبل از اینکه به ادامه بحث پرداخته شود باید این نکته رو بیان کنم که &#34;بیشتر تکنولوژی‌ها، فریم‌ورکها و پلتفرمهای مطرح در زمان نوشتن این مطلب تا حد زیادی قابل اطمینان بوده و قادر به پاسخگویی تقریبا همه نیازهای شرکتهای کوچک و متوسط می‌باشند، با اینحال ممکن است برخی مستعد اشکال باشند و یا برخی ممکن است با استفاده نادرست محل مشکل شوند.&#34;، هدف این مطلب بررسی معایب و مزایای بسترهای ساخت وبسایت مطرح دنیای کنونی نیست، همچنین قصد ایراد گیری از هیچ فرد خاص یا محصول خاصی هم در نظر نیست، بلکه قصد دارم بیشتر در مورد روشهای راه‌اندازی وبسایتها، خطرات احتمالی که ممکن است بروز کند و همچنین مزایای اونها مطالبی ارائه کنم.شما وقتی به عنوان کارفرما برای راه اندازی یک وبسایت به یک فرد یا شرکتی مراجعه می‌کنید، پیمانکار شما عمدتاً به دو صورت می‌تواند سایت شما را راه‌اندازی کند: 1- وبسایت شما را از ابتدا نوشته و راه‌اندازی می‌کند، در این حالت پیمانکار سایت شما رو با توجه به نیازمندیهایی که بعد از مشورت با شما و تحلیل سیستم بدست آورده طراحی و پیاده‌سازی(کد نویسی) خواهد کرد. افرادی که اخصاصی بودن سیستم، کپسوله بودن سیستم (بی اطلاعی دیگران از نحوه پیاده سازی سیستم و کدهای بکار رفته در آن)، گسترش راحت و پشتیبانی سریع برایشان بسیار مهم است معمولا تأکید خواهند داشت که وبسایتشان با این روش راه‌اندازی شود. 2- با توجه به اینکه سیستم مد نظر شما در چه فیلدی قرار است فعالیت کند با بهره‌مندی از یکی از سیستمهای ( عمدتاً سورس باز) موجود در بازار وبسایت شما راه راه‌اندازی می‌کند و سعی خواهد کرد نیازهای شما رو با تهیه افزونه‌های مختلف یا از نو نوشتن افزونه جبران کند. کسانی که خواهان بهره‌برداری هرچه سریعتر سیستمشان هستند، و بودجه کمی برای راه‌اندازی وبسایت کنار گذاشته‌اند معمولا به این روش وبسایتشان را راه‌اندازی می‌کنند.در روش شماره یک، بدلیل اینکه پیمانکار شما، زمان زیادی را برای راه‌اندازی وبسایت صرف خواهد کرد و یا بدلیل اینکه از ابزارها و سیستمهای کاملا اختصاصی برای وبسایت شما استفاده می‌کند مطمئناً برای شما هزینه بیشتری خواهد داشت، در عوض، شما مطمئن هستید یک سیستم اختصاصی با ویژگیهایی که با مشورت خودتان بدست آمده سیستم راه‌اندازی شده و به مرحله بهره‌برداری رسیده است، اگر تصمیم گرفتید سیستم به این صورت راه اندازی شود، باید حتماً از زبان مورد استفاده، پلتفرم و فریم‌ورک استفاده شده در سیستم اطلاع داشته باشید. حتماً در مورد امنیت سیستم مطلع شوید، فریم‌ورک‌های امروزی معمولا تا حد زیادی موارد امنیتی شناخته شده را رعایت میکنند و نفوذ به آنها برای هکرهای مبتدی و متوسط تقریباً غیر ممکن است، با این حال گاها برخی موارد نیز باید توسط برنامه نویس رعایت شود، در این روش چون نیاز به کدنویسی زیادی وجود دارد، هم همانطور که قبلاً بیان شد هزینه زیادی خواهد داشت و هم زمان زیادی برای راه‌اندازی سیستم صرف خواهد شد.در روش شماره دوم، اصولاً بخاطر اینکه معمولاً درصد بسیار بالایی از کار راه‌اندازی وبسایت با بهره‌مندی از ابزارها و سیستمهای تولید محتوای رایگان انجام میشود، باید هزینه کمتری داشته باشد. بدلیل سبک طراحی سیستمهای مدیریت محتوا می‌توان برای این وبسایتها به راحتی با نصب کردن پلاگینها و افزونه‌های مختلف امکانات جدید و جالبی رو افزود، می‌توان قالب ظاهری آنها رو به راحتی چند کلیک عوض کرد، در نسخه‌های جدید این سیستم‌ها معمولاً استانداردهای مربوط به موتورهای جستجو  (سئو)  نیز تا حدی به صورت پیشفرض رعایت شده است، و خیلی مزایای دیگر... با این حال این سیستمها معایب قابل توجهی هم دارند، یک، اینکه هکرها به راحتی می‌توانند با روشهای مختلف پی ببرند که وبسایت شما با چه سیستمی راه‌اندازی شده و با شناختی که از راه‌های نفوذ آن دارند می‌توانند به آنها نفوذ کنند. دو، با اینکه تیم‌ها و افرادی هستند که بصورت حرفه‌ای با سیستمهای اوپن سورس کار می‌کنند و صادقانه تلاش می‌کنند که محصولی کاملاً منطبق با نیازهای شما اراِئه دهند و قادر هستند حتی با تغییر در کدهای سیستم محصول شما رو کاملا آنطور که دوست دارید به مرحله بهره‌برداری برسونند، با اینحال بسیاری از افرادی که با کمک گرفتن از سیستمهای آماده اقدام به راه‌اندازی وبسایت برای مشتری می‌کنند اطلاعات کمی در مورد حرفه برنامه‌نویسی دارند و درجایی که برای نیاز شما نتوانند افزونه‌ای پیدا کنند به مشکل خواهند خورد، و توانایی پشتیبانی حرفه‌ای و رعایت اصول امنیتی و سئو رو نخواهند داشت. سه، بدلیل اینکه سیستم‌های آماده بسیار پراستفاده هستند و توسط بسیاری از هکرها مورد رصد قرار گرفته‌‌اند هکرهای زیادی نیز از اشکالات امنیتی آنها مطلع هستند و اگر تمهیدات امنیتی کاملی انجام نگیرد ممکن است به راحتی توسط افراد سودجو مورد نفوذ قرار گیرند، چهار، بدلیل همه منظوره بودن و تلاش برای پاسخگو بودن به نیازهای مختلف این سیستمها معمولا حجم کد زیادی داشته و گسترش و اختصاصی سازی آنها کمی مشکل است همچنین ممکن است به فضای هاستینگ بیشتری نیاز داشته باشند و ...اگر قصد دارید وبسایت شما به بهره‌گیری از سیستم‌های آماده راه‌اندازی شود، باید حتماً این را بخاطر بسپارید که &#34;حداقل در دنیای کامپیوتر پراستفاده بودن محصولی دلیل بر برتری آن نیست، این پر استفادگی بیشتر بدلیل راحتی استفاده هست نه دلایل دیگر&#34;، پس با کمی تحقیق و وسواس بیشتر سیستم مورد نظر خود را انتخاب کنید و از پیمانکار بخواهید از آن استفاده کند. معمولاً وقتی از امنیت صحبت می‌شود بسیاری از افراد فکر می‌کنند امنیت تنها به دزدیدن محتوای وبسایت یا موبایل یا کامپیوتر آنها خلاصه می‌شود، و به خودشون میگن: &#34;من که اطلاعات بدرد بخوری در سیستمم ندارم، بذار هکش کنن&#34; اما امنیت سایبری واقعا فقط این نیست، با ذکر دو نمونه می‌توانید متوجه شوید که چقدر امنیت یک سایت یا حتی گوشی و لپ‌تاپ شما مهم است: افراد سودجو میتونن بدون دستکاری در وبسایت شما، به اون رسوخ کرده و از منابع سخت افزاری تعلق گرفته به اون برای حمله به وبسایتها یا سیستمهای مهم و بزرگتر استفاده کنن، چه بسا در این صورت وبسایت شما  و در واقع خود شما به عنوان حمله کننده شناخته می‌شوید که ممکن است درد سرهایی برای شما ایجاد کند.افراد سودجو می‌تونند از منابع سخت افزاری اختصاص یافته برای وبسایت شما، تلفن همراه، تبلت یا کامپیوتر شما برای ماینینگ و کسب درآمد استفاده کنند.با این اوصاف چه وبسایت شما به صورت اختصاصی کدنویسی شود، چه از سیستم‌های آماده بهره‌مند شود، حتماً نیاز است که  از لحاظ امنیتی توسط افراد متخصص تست شود. موارد سئوی آن مورد آزمایش قرار گیرد، مدت و موارد پشتیبانی در قرارداد ذکر گردند، در مورد امکان گسترش و پاسخگویی سیستم در زمانی که وبسایت شما گسترش یافته و دارای بیننده زیادی است با پیمانکار مذاکره گردد.</description><category>سعید</category><author>سعید</author><pubDate>Fri, 13 Dec 2019 04:36:40 +0330</pubDate></item><item><title>درجا نزن، وارد دنیای برنامه نویسی شو!</title><link>https://virgool.ir/@iclick.cmp/درجا-نزن-وارد-دنیای-برنامه-نویسی-شو-yila4qnost3i</link><description>همونطور که میدونیم، خیلی از افراد دنبال یادگیری برنامه نویسی و ورود به دنیای عجیب و جالب برنامه نویسی هستند، اونها درگیر مسائلی هستند و هرگونه انتخاب و تصمیم آنها میتواند واقعاً آینده شغلی حتی زندگی شخصیشون رو تحت تأثیر قرار دهد، انتخابهایی چون زبان برنامه نویسی مناسب، فیلد کاری مناسب، منابع آموزش مناسب و موارد دیگری که ممکن است به ذهن افراد مختلف برسند یا نرسند. این موارد بسیار گیج کننده، سخت و بسیار وقت گیر هستند، کلی زبان برنامه نویسی، فریم‌ورکهای مختلف و فیلدهای کاری جذاب در دنیای IT وجود دارند که حتی ممکن است یک فردی چندین ماه یا بیشتر از یک سال خود را صرف مطالعه و تحقیق در این موارد کند تا بهترین انتخاب را داشته باشد، سعی میکنم در این متن راه حل جالبی برای این افراد معرفی کنم.به صورت خلاصه، اگر از اطرافیان یا دوستان خود که در زمینه developing موفق (یا نسبتا موفق) هستند سوال کنید که چگونه توانستند پیشرفت کنند، غالباً به جوابی شبیه به این خواهید رسید: &#34;فقط شروع کردم به کار کردن&#34;. شاید با خود بگویید من هم در واقع در تلاش هستم که شروع کنم، فقط تحقیق میکنم که چگونه و از کجا شروع کنم، این همون تفاوتی است که در شروع کردن شما با شروع کردن افراد موفق وجود دارد، اونها عموماً تحقیق نکردن که از کجا و چگونه شروع کنن، اونها عموما از همون روزهای اول شروع به کار و تولید نرم افزار کردن، یعنی ممکنه تمرینی رو شروع و تلاش کردن که تمومش کنن، یا اینکه عده‌ای حتی جسورتر بوده و پروژه‌ای رو گرفته و به تکمیل آن پرداختند، این افراد دنبال بهترین زبان، بهترین تکنولوژی یا بهترین منابع نبودند، از منابع موجود و دم دست استفاده می‌کنن و پروژه مد نظرشون رو جلو می‌برند، مطمئن باشید با شروع یک پروژه (هرچند کوچیک) با مسائل و چالشهای مختلفی روبرو خواهید شد، ممکن است درگیر فیلدهای مختلفی شوید و در این صورت است که متوجه خواهید شد در فیلد کاری خاصی استعداد یا علاقه دارید و کم‌کم خودتون رو به اون جهت سوق خواهید داد. افراد موفق در برنامه نویسی عموماً وابسته به یک زبان یا تکنیک خاص نیستند، در واقع اونها الفبای برنامه نویسی رو یاد گرفتند، ذهنشون برای تفکرات برنامه نویسانه آماده شده و تکامل پیدا کرده است، در واقع اگر ساده تر بگم اونها &#34;برنامه نویس&#34; هستند، و یک برنامه نویس قوی و قابل به زبان برنامه نویسی خاصی وابسته نیست و سریع میتواند هر زبان که مد نظرش هست رو یاد بگیرد، خب اونها الفبای برنامه نویسی و مفاهیم بنیادی اون رو یاد گرفته و تمرینات نسبتاً زیادی در زمینه روشهای مختلف حل مسائل(problem solving) داشتند، در شروع یادگیری بسیار شوق داشته و با علاقه برای تمرین و حل مسائل مختلف زمان گذاشته‌اند.پس، برای ورود به دنیای جالب برنامه نویسی نباید سختگیرانه برخورد کرد، بهتره اگر یک موضوع کاری برایتان پیش اومد از انجام اون نترسید و خودتون رو باهاش درگیر کنید و شروع به انجام آن بکنید، مطمئن باشید اگر شروع به کار کنید بصورت معجزه‌آسایی روش انجام اون رو یاد خواهید گرفت و خواهید توانست اون رو به اتمام برسانید.  نباید در یادگیری و انتخاب زبان یا تکنولوژی مناسب کمالگرایانه برخورد کنید بجای این سعی کنید اصول اساسی رو یاد بگیرید در اینصورت مطمئن باشید در آینده موقع نیاز به راحتی سوئیچ خواهید کرد. ممکن است در بین اطرافیان شما شخص یا اشخاصی باشد که در زمینه توسعه نرم‌افزار صاحب تجربه هست، حتماً از ایشون برای یادگیری و کمک استفاده کنید، از سوال کردن خجالت نکشید و در یادگیری مصر باشید، کمالگرایی در زمان انجام پروژه نیز میتواند مشکلات زیادی برای ما بوجود بیاورد، افراد کمالگرا معمولاً در زمانبندی انجام پروژه اشتباه خواهد کرد که این امر سبب نارضایتی مشتری است، باعث سردرگمی و عصبی شدن خود شما نیز خواهد شد، پس بهتر است بجای تهیه کردن بهترینها بفکر این باشیم که پروژه واقعاً چه چیزهایی نیاز دارد و کارفرما دنبال چه چیزی هست؟!ممکن است علاقه شما به یک موضوع خاص مثل، بازی سازی، هک، مسائل مربوط به تجارت و تجارت الکترونیک شمارو به سمت یادگیری برنامه نویسی سوق داده باشد، معمولاً اینگونه افراد عجول هستند و سعی میکنند خیلی سریع به هدف اصلی خود برسند، اما برنامه نویسی چیزی نیست که بشود یک شبه یا ده شبه اون رو یاد گرفت، باید بیاد داشته باشید حتی اگر میخواهید از برنامه نویسی فقط در فیلد کاری مورد علاقه خود استفاده کنید باز نیازمند هستید که مفاهیم بنیادی اون رو یاد بگیرید باز باید برای تمرین و یادگیری روشهای حل مسائل وقت گذاشته و تمرین مستمر کنید، این افراد تصور میکنند که نیاز ندارند همه چیز در مورد برنامه نویسی رو بدونن و فقط کافیه موارد مربوط به فیلد مورد علاقه خودشون رو یاد بگیرند، اما باید در نظر بگیرید که مفاهیم اصلی برنامه نویسی برای همه افراد و همه زمینه‌های کاری یکسان است، حتی ممکن است برای برخی فیلدهای تخصصی نیاز به تمرین بیشتری برای یادگیری روشهای حل مسائل وجود باشد.برای هرفردی ممکن است روش یادگیری خاصی مفیدتر از روشهای دیگر باشد، برخی از افراد با مطالعه کتاب یا مقالات آموزشی سریعتر یاد میگیرند، بعضی با فیلم دیدن و برخی ممکن است وابسته به مدرس حضوری یا تعاملی باشند، اما بخاطر داشته باشید اکثر برنامه نویسان باتجربه باهم همنظر هستند که بهترین معلم برای برنامه نویسان &#34;نمونه کد&#34; هست! به این خاطر توصیه می‌شود حتماً در وبسایتهایی که پروژه‌های اوپن‌سورس به اشتراک میگذارند عضو شده و برای مطالعه پروژه‌های مختلف وقت جدا کنید. در نهایت با هر زمینه یا زبانی که شروع به کار کردید نباید وابستگی قلبی(تعصب) به آن پیدا کنید، حتماً این رو در یاد داشته باشید که دست بالای دست زیاده و کاملاً ممکنه اون چیزی که انتخاب کردید بهترین نباشه، پس برای مطالعه زبانها و تکنولوژیهای مختلف زمان صرف کنید.</description><category>سعید</category><author>سعید</author><pubDate>Sun, 08 Dec 2019 13:33:27 +0330</pubDate></item><item><title>به ویرگول، خوش! آمدم؟</title><link>https://virgool.ir/@iclick.cmp/به-ویرگول-خوش-آمدم-drlmrmw41jg6</link><description>سلام به کاربران وبسایت قشنگ ویرگول، اگر درست یادم باشه چند سال پیش در خبری که از خروجی یکی از ویکندها منتشر شد با طرح ویرگول آشنا شدم، مثل خیل زیادی از اخبار که به سادگی از کنار آنها رد می‏شویم من هم از کنار آن خبر گذشتم، اما اوایل امثال متوجه فعالیت ویرگول شدم، و بنظر ایده بسیار جالبی هست، امیدوارم فرصت و امکان مطالعه مطالب آن همچنین گهگداری نوشتن مطالب مرتبط با آی تی و برنامه نویسی در آن رو داشته باشم.</description><category>سعید</category><author>سعید</author><pubDate>Sun, 08 Dec 2019 02:25:16 +0330</pubDate></item></channel></rss>