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

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

 

اول از همه مسیر خود را در مسیر گرایش برنامه نویسی مشخص کنید. می خواهید برای وب بنویسید یا برای سیستم کاربر؟
پیشنهادم برای آنهایی که دوست دارند تحت وب بنویسند : PHP, ASP.Net, Java می باشد. دقت کنید برای شروع برنامه نویسی تحت وب حتما با HTML, Java Script و CSS آشنا باشید. بدون این سه مورد شما یک برنامه نویس حرفه ای تحت وب نخواهید بود. دقت کنید انتخاب PHP انتخاب مناسبی است مادامی که به نوشتن برنامه های تحت وب محدود مبادرت بورزید، PHP می تواند در نوشتن سایت ها یا برنامه های تحت وب پیچیده مشکل ساز باشد.
حال آنکه یاد گیری جاوا در نوع خود کمی مشکل می باشد، ولی سایت هایی که با جاوا نوشته شوند واقعا قابل اعتماد و مستحکم هستند، بعلاوه اینکه دستمزد یک سایت نوشته شده با جاوا به مراتب بسیار بیشتر از سایتی نوشته شده با PHP است. این در حالی است که ASP.NET در میان این دو قرار دارد و از ویژگی های هر دو در خود دارد، هم آسان است و هم پایدار، پس می توانید ASP.Net را هم در لیست علاقه مندی های خود برای برنامه نویسی تحت وب قرار دهید. پروژه های نوشته شده با ASP.net هم به مراتب گران می باشند و می توانند دستمزد خوبی برای برنامه نویس داشته باشند.

ولی دانستن نکات فوق زمانی مفید خواهد بود که شما با یک پایگاه داده استاندارد هم آشنا باشید. انتخاب خیلی از برنامه نویسان خلاصه شده در : Oracle, MySQL و MS SQL Server . البته هسته هر سه زبان SQL می باشد، لذا SQL را یاد بگیرید. توجه به این نکته که یادگیری پایگاه داده خیلی کمتر زمان بر خواهد بود، می توانید ابتدا به یاد گیری آن بپردازید و چون در برنامه نویسی حرفه ای باید با دستورات SQL هم برای تولید برنامه آشنا باشید لذا مفاهیم و دستورات SQL را که بسیار آسان هستند را یاد بگیرید.

 

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


چنانچه شما علاقه مند به یادگیری یک زبان برنامه نویسی برای تولید نرم افزارهای تحت کامپیوتر کاربر می باشید، کمی کارتان مشکل تر است. در واقع برنامه نویسی لوکال (تحت سیستم کاربر) به نوعی سخت تر است. البته این امر وقتی احساس می شود که شما هم در وب بنویسید هم لوکال، این دشواری زمانی احساس می شود که به برنامه نویسی تحت وب که تا حدودی آسان است عادت کرده باشیم. توجه با این نکته که برنامه های نوشته شده لوکال می توانند واقعا سودآود باشند، خیلی از برنامه نویسان حداقل یک زبان برنامه نویسی لوکال را ید می گیرند. دقت داشته باشد که دانستن همان مفاهیم و اطلاعات IT ضروری می باشند. در واقع این مفاهیم دید شما را نسبت به برنامه ای که می نویسید بسیار وسعت می بخشند. همچنین بحث پایگاه داده نیز در این نوع برنامه نویسی استوار است. با این تفاوت که گرایش بیشتر به سمت پایگاه داده های Oracle, MS SQL Server یا MS ACCESS می باشد. زبان های برنامه نویسی رایج و بسیار مناسب هم در این زمینه : C++ , C#, Java, Delphi می باشند. البته موارد دیگری هم هستند که یا کاربران کمی دارند یا در حال انقراض می باشند، لذا از ذکر آنها معذورم. دقت داشته باشید که انتخاب هریک از این زبان ها مستلزم پیش نیازهای خاصی می باشد ولی در کل آشنایی کامل با الگوریتم ها و زبان برنامه نویسی C کمک شایانی برای شما خواهد کرد.

اگر بخواهیم از بعدی دیگر قضیه را بررسی کنیم، عوامل بسیاری نظیر: صبر و حوصله، پشتکار، علاقه وافر، خلاقیت، دقت، هوشیاری و سرعت عمل از عواملی هستنذد که بسیار به یادگیری یک زبان برنامه نویسی کمک می کنند.
ضمن اینکه دانستن زبان انگلیسی یعنی 50% پیشرفت اولیه! انگلیسی به حدی در برنامه نویسی به درد شما می خورد که خودتان متعجب می شوید.
دقت کنید قبل از شروع بسنجید و ببینید که شما توانایی یاد گیری را هنگام خودخوانی دارید یا نه؟ شایان ذکر است بسیاری از متخصصین برنامه نویسی خودشان برنامه نویسی را یاد گرفته اند و کلید آن دانلود Ebook  و تمرین و نوشتن کد است. اگر نیاز به یک کلاس برای شروع دارید، این کار را بکنید، مسیر را پیدا کنید و خودتان ادامه دهید.

 http://www.shell32.net/post-412.aspx

+ نوشته شده توسط سیدامین غضنفری در پنجشنبه بیست و ششم دی 1387 و ساعت 4:26 |

به نام خدا

هوش مصنوعی Artificial Intelligence تکنیکی برای خلق کردن ماشینهای است که قادر به فکر کردن بدون نیاز به انسان ها میباشند.

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

تا کنون ماشینی که توانایی درک از خود را داشته باشد خلق نشده است اگر چه یک گروه از دانشمندانی که در حال انجام یکسری ازمایشات بر روی رباتهای زنده ((living robots ای که به گونه ای طراحی شده بوده اند که به طور مستقل فکر کنند، بوده اند ادعا کرده اند که یکی از ربات های آنها به نام گک (Gaak ) تلاش کرده است تا از محل زندگی خود فرار کند.

این ربات که در آزمایش “survival of the fittest” (زنده ماندن قویتر ها) شرکت داشته، سعی کرده تا از یکی از مبارزات روزانه اش بگریزد.

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

آزمایشی برای تشخیص هوشمند بودن ربات ها:

“turning test” نام آزمون بین المللی است که توسط آن هوشمند بودن یک ماشین مورد آزمایش قرار میگیرد.

این آزمون بعد از Alan Turning، نابغه ریاضی که برای اولین بار این روش را پیشنهاد کرد اینگونه نام گرفت.


در این تست 2 نفر (ََA و B ) در یک اتاق در بسته نشسته و نفر سوم (C ) در خارج از اتاق قرار میگیرد. نفر اول A سعی میکند تا نفر سوم را در مورد جنسیت خود (ربات یا انسان بودن) گمراه کند، در حالی که نفر دوم B تلاش میکند تا به نفر سوم C برای شناختن جنسیت نفر اول یاری دهد.

ترنینگ پیشنهاد کرد که جای نفر اول با ماشین تعویض شود. در صورتی که آن ماشین بتواند همواره نفر سوم را مانند یک انسان فریب دهد آن ماشین احتمالاً هوشمند است.

 AI های متخصص:

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

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

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

این ناتوانی از آنجا ناشی میشود که این دسته از برنامه ها توانایی generalization یا عمومیت دادن را ندارند.


منظور از generalization و یا عمومیت دادن چیست؟

منظور از generalization توانایی خلق کردن اطلاعات جدید بر اساس اطلاعات قدیمی است. تمامی انسان ها از این توانایی برخوردار هستند اگرچه ماشین ها به طور کامل و همانند انسان چنین توانایی را ندارند.
برای درک بهتر موضوع به این مثال ساده توجه کنید:

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

 

Neutral nets چیست؟

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

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

Neutral nets دی کنار مزایایی که دارد از معایبی نیز برهستند. برای مثال برای آماده کردن آنها به کار و وقت بسیار زیادی نیاز است زیرا اینگونه سیستم ها قبل از به کار گرفته شدن باید آموزش داده شوند. آنها از برخی جهات به کودکان شباهت دارند و هر مطلب باید چندین بار برای آنها تکرار شود تا آن را بیاموزند.


AI در بازی ها:

AI در بازیهای کامپیوتری معمولاً در نقش دشمن و یا متحدین شما ظاهر میشود.

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

+ نوشته شده توسط سیدامین غضنفری در سه شنبه هفدهم دی 1387 و ساعت 21:12 |