وبلاگ شخصی سید سروش هاشمی

به نام خدایم روان شد به کار / که نامش بود هم به فرجام کار

وبلاگ شخصی سید سروش هاشمی

به نام خدایم روان شد به کار / که نامش بود هم به فرجام کار

وبلاگ شخصی سید سروش هاشمی

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

۲ مطلب با موضوع «کامپیوتر» ثبت شده است

برای یادگیری برنامه نویسی وب چی بخونم؟ (قسمت اول)

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

  سوالگر : می خوام برنامه نویسی وب یاد بگیرم. چی بخونم؟ با توجه به این که دانش برنامه نویسی ام خیلی کمه.

  پاسخگر :

  برنامه نویسی وب ۲ قسمت داره: client side و server side. غالبا با client side شروع می کنن و بعد تصمیم می گیرن که در آینده می خوان client side کار کنن یا server side یا هر دو. 

  برای سمت client باید html و css و javascript یاد بگیری. یادگیری html اولین اولویت هست. بعدش css و بعد هم javascript. البته مرحله دوم و سوم به هدف شخص بستگی داره. اگر بخواد کلا سمت server کار کنه بهتره بیخیال مرحله دوم بشه. و اگر می خواد طرف client کار کنه css بسیار واجب هست و javascript مستحب موکد.

  برای یادگیری این موضوعات سایت tutorialspoint.com خیلی سایت خوبی هست. خیلی مختصر و مفید گفته.

  دقت کن که تو می خوای html یاد بگیری و نه html 5. این دو با هم یه کم فرق دارن. html 5 یه کم پیشرفته تر از html هست و برای یادگیری اش بعضی وقت ها باید یه سری مباحث درباره شبکه و database و یا یه سری سنت ها که در برنامه نویسی سمت سرور وجود داره رو بدونی.

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

  درباره javascript یه کم داستان سخت میشه. تجربه یه نفر که قبلا برنامه نویسی کرده به شدت کمک می کنه که راحت تر این زبان رو یاد بگیری. البته تو C خوندی و با دیدن javascript احتمالا خیلی احساس راحتی نمی کنی(مثلا تو javascript ما کلا نوع متغیر نداریم. یه متغیر تعریف می کنی و توش هر چیزی می خوای میریزی. از جمله عدد و string و ... (و حتی تابع. دقت کن خروجی تابع نه. خود تابع)) ولی به مباحثی برمی خوری که تجربه قبلی کمک می کنه.

  اگر خیلی اطلاعات برنامه نویسی نداری برای یادگیری javascript پیشنهاد می کنم از سایت www.khanacademy.org اقدام کنی. آموزش های این سایت interactive هستن. یعنی بهت می گه این سوال رو حل کن(یه سوال خیلی ساده) و تو کد می زنی و می فرستی و میگه حلت درست بود یا نه.

  قطعا در این راه به جاهایی می رسی که می خوای چیزهایی که یاد گرفتی رو امتحان کنی. برای این کار پیشنهاد می کنم یه وبلاگ بزنی. سرورهای زیادی برای وبلاگ وجود داره و غالبا بهت این اجازه رو می دن که html و css و javascript وبلاگ خودت رو خودت بنویسی. مثلا blog.ir گزینه خوبی هست. 

  البته به مراحلی هم می رسی که می خوای تست های کوچیک انجام بدی. برای تست های کوچیک html و css ساده ترین راه اینه که تو یه فایل متنی چیزی که می خوای رو بنویسی و بعد با یه browser بازش کنی. برای javascript هم این راه جواب میده ولی راه ساده تر اینه که یه IDE برای javascript بگیری. یکی از بهترین IDE ها برای javascript و html و css و بسیاری چیزهای دیگه که به وب(هم طرف client و هم طرف server) ربط داره WebStorm هست(این IDE یکی از محصولات شرکت JetBrains هست. کلا این شرکت در زمینه IDE ها ترکونده. خیلی محصولاتش راحت و جالبن هستن. اگر خواستی یه بار درباره این شرکت بهت توضیح میدم که چرا شخصا استفاده از محصولات این شرکت رو نسبت به بسیاری از شرکت ها ترجیه میدم). البته اگر حال نداری یه IDE دانلود کنی خود browser ها یه سری امکانات کوچیک مثل auto complete و ... دارن. برای استفاده از این امکانات کافیه بعد از این که یه کم اون مباحث رو خوندی دکمه F12 رو تو chrome (یا دکمه مربوطه در browser دیگه ای) رو بزنی. بخشی برای تغییر html و css صفحه داره. همین طور یه بخشی برای نوشتن کد javascript.

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


  پی نوشت: قسمت دوم این پست وقتی نوشته میشه که این شخص client side رو خوندهباشه و بیاد بپرسه «حالا server side رو چی کار کنم؟». :))

php vs C# vs python

   یکی از دوستان سوالاتی با مضمون php vs C# vs python (و ادامه این بحث) پرسید و من هم جوابش رو دادم. دیدم این سوالا زیاد پرسیده میشه گفتم این جا بذارم که از این به بعد من(یا شما) اگر دیدیم مناسبه به این جا ارجاع بدیم.

  پرسش گر: php vs C# vs python

  من: 

  اوایلی که وب تازه راه افتاده بود php یکه تاز میدون بود. زبان قوی و ساده(نسبت به بقیه رقیب هاش در زمان خودش) بود. بنابراین اکثر کسایی که می خواستن back end بزنن می رفتن سراغ php. کلی frame work در زبان php درست شد. مثل word press و joomla و ... . خلاصه خیلی community قوی ای داشت. ولی یه سری مشکلات داشت. سایت های خیلی بزرگ رو بخوای با php بزنی خیلی سخت می شه. چون ساختارش خیلی شی گرا نیست و باید کد رو وسط html بزنی و حالا اگر بخوای یه جایی از کد رو عوض کنی باید چک کنی که آیا جایی مشکلی پیش میاد یا نه(و چون کدها خیلی قالب مشخصی ندارن این کار خیلی راحت نیست) و ... .

  بعد از مدتی، طبق معمول مایکروسافت که دید یه جایی نون هست یه framework برای back end نوشت تحت زبان C# به نام ASP.NET. چون زبان C# خیلی منظم تر و تمیز تر از php بود خیلی ها به سمت ASP.NET کشیده شدن. پروژه های بزرگ در C# خیلی تمیز تر بودن و ساختار C# شی گرا بود. خلاصه که مزیت های C# نسبت به php خیلی خوب بود و باعث شد خیلی ها از php به C# مهاجرت کنن.
تا اون زمان شرکت های زیادی(که دیگه بزرگ شده بودن) از اول کارشون رو با php شروع کرده بودن. وقتی یه شرکت بزرگ کارش رو با یه زبان برنامه نویسی شروع کرده، تغییر تمام کدهایی که زده از یک زبان به یه زبان برنامه نویسی دیگه، خیلی کار سخت، پرهزینه و زمان بری هست. علاوه بر اون باید به تمام نیروهای انسانی متخصصش آموزش بده که بتونه به اون زبان مهاجرت کنه. حتی اگر تصمیم بگیره این فرآیند رو تدریجی انجام بده، مشکلی که باهاش مواجه میشه تنظیم یه برنامه خوب برای مهاجرت تدریجی هست.
بنابراین شرکت ها فقط در صورتی مهاجرت می کردن که مطمئن میشدن سود مهاجرت به هزینه هاش می ارزه.


  بعد از مدتی، امکان تولید زبان های برنامه نویسی high level تر فراهم شد. زبان هایی که float و int و double و ... براشون فرقی نمی کرد و تو فقط کافی بود بگی این متغیر یه عدد هست و بقیه چیزها رو به همون زبان واگذار می کردی. زبان هایی که سادگی و high level بودنشون کدها رو خیلی کوتاه تر می کرد و زمان develop کردن یه نرم افزار رو بسیار کاهش می داد. این زبان ها کم کم راهشون رو به back end وب سایت ها هم باز کردن. مثلا frame work های Ruby on Rails برای زبان Ruby و Django برای Python اومد. چون این زبان ها در ذات high level بودن، کدهای back end وبسایت ها هم خیلی کوتاه می شد و در نتیجه development وبسایت ها خیلی سریع تر میشد. در فضای کنونی خیلی از شرکت ها نیازهاشون در هفته تغییر می کنه بنابراین تو لازم داری وبسایت رو هر هفته تغییر بدی. حالا اگر تغییر دادن وبسایت برای پاسخ گویی به نیازهای جدید بیشتر از 1 هفته طول بکشه، اون شرکت اصلا نمی تونه با اون زبان کار کنه.
  طبق معمول مهاجرت برای شرکت های بزرگ خیلی کار سختی بود و فقط شرکت هایی مهاجرت کردن که مطمئن بودن براشون سود خواهد داشت.

  زبان های high level به خاطر ویژگی های خیلی خوبشون، community خیلی بزرگی پیدا کردن. این community ها از دانشمندان هوش مصنوعی تا پزشکان و ... تشکیل شده. بنابراین package های زیادی که در زبان هایی مثل C# و php و ... نیست در این زبان های پیدا میشه. در بین این زبان های high level، زبان python از بقیه community بزرگتری داره و کلی package برای کارهای academic و همین طور کارهای practical در فضای کاری برای اون وجود داره.

  این بخشی از ماجرای php vs C# vs python بود. برای اطلاعات بیشتر می تونی search کنی.
  البته در search به این خواهی رسید که زبان های C# و (احتمالا) php هم high level هستن. منظور من از high level اصطلاح high level در دنیای کامپیوتر نبود بلکه معنای لغوی high level بود.

  پرسش گر: کدوم رو یاد بگیرم بهتره؟

  من: الان شرکت های خیلی زیادی در ایران هستن که با php و ASP.NET کار می کنن ولی این شرکت ها همون شرکت هایی هستن که گفتم. اگر بخوای تو این شرکت ها استخدام بشی باید همون زبان و frame work ای که اون ها می گن رو بخونی(مگر این که قبول کنن یه گروه برای خودت توی اون شرکت داشته باشی و با زبان برنامه نویسی مورد نظر خودتون کار کنین) ولی اگر بخوای یه کاری برای خودت انجام بدی شدیدا ptyhon و django رو پیشنهاد می کنم. اگر یه کم search کنی میبینی google(و بسیاری از شرکت های بزرگ دیگه) هر جایی که امکانش بوده  از python استفاده کرده(بعضی اوقات امکانش نیست. مثلا python از نظر سرعت اجرا 5 الی 6 برابر کند تر از C هست. حالا تو اگر بخوای یه کار حساس از نظر زمانی رو انجام بدی قطعا python گزینه مناسبی نیست.(هر چند کتابخونه هایی برای زبان python نوشته شدن که در نهایت چیزی که تو می خوای رو با یه سری برنامه به زبان C انجام میدن و خروجی رو بهت میدن) )

  پرسش گر: برای یادگیری python و django چی کار کنم؟

  من: برای یادگیری python می تونی از سایت tutoriaspoint استفاده کنی(آموزش پایتون در سایت tutorialspoint). این سایت آموزش های خیلی مختصر و مفیدی برای کلی موضوع داره. آموزش python اش به اندازه کافی خوبه. برای یادگیری django هم پیشنهاد می کنم به documentation خود django مراجعه کنی. واقعا documentation اش خوبه. یه بخش از سایت Django هست که خیلی مختصر و مفید یه نحوه develop و deploy یه سایت کوچیک رو مرحله به مرحله توضیح داده.(لینک این آموزش مرحله به مرحله). پیشنهاد می کنم از این جا شروع کنی. 

  پرسش گر: چه IDE ای رو پیشنهاد می کنی:

  من:pycharm. می تونی از این لینک دانلودش کنی. این که چرا pycharm خوبه و ... رو دیگه امشب حوصله ندارم توضیح بدم. شاید وقتی دیگر.

  پرسش گر: دستت درد نکنه

  من: خواهش می کنم