ميبينيم كه اشخاص زيادي اين سؤال را مطرح ميكنند: “چگونه برنامه نويسي اندرويد ياد بگيريم؟” به نظر ميرسد اشخاص زيادي دربارهي انتخاب روش “درست” براي شروعِ آموزش برنامه نويسي اندرويد سردرگمند.البته اين مسئله با درنظر گرفتن حجم وسيع منابع موجود عجيب نيست. كتابها، مراجع ويديوئي، پستهاي بلاگ و تعداد نامحدودي صفحات اسناد براي يادگيري موجودند.منابع رايگان، منابع پولي و منابعي بسيار گرانقيمت هم ميتوان يافت. محتواي ساده، محتواي سخت و محتواي گيجكننده هم وجود دارد و كاري بسيار سخت است كه بفهميد در حال پيشرفتيد يا تنها وقت خود را تلف ميكنيد.در اين مقاله ميخواهيم به آنهايي كه هيچ تجربهي برنامه نويسياي ندارند كمك كنيم تا يادگيري برنامه نويسي اندرويد را شروع كنند.
در اين مقاله برنامه نويسي ياد نميگيريد. در عوض منابعي كه براي شروع به آنها نياز داريد ( و نداريد) را خواهيد ديد و ياد ميگيريد كه بعد از شروع به كار، چطور به يادگيري ادامه دهيد.
بياييد شروع كنيم.
آيا منطقي است كه هنوز برنامه نويسي نيتيو اندرويد ياد بگيريم؟
اندرويد و iOS دو سيستمعامل بزرگ موجود در بازار امروزند و شركتها اغلب علاقه دارند براي جذب مخاطب بيشتر برنامههايشان را روي هر دو پلتفرم عرضه كنند.به همين دليل، بايد يا دو گروه برنامه نويسي اپليكيشنهاي “نيتيو” براي هر دو سيستم عامل داشته باشند يا يك فريمورك كراسپلتفرم (cross-platfrom framework) را انتخاب كنند.برنامه نويسي نيتيو به اين معناست كه از زبان و ابزارهاي برنامه نويسيِ مختص به يك سيستمعامل- مثلا اندرويد يا iOS – استفاده كنيم و كدي را بنويسيم كه فقط روي همان پلتفرم انتخابي اجرا ميشود.اگر بخواهيم اپليكيشن روي سيستمعامل ديگري هم اجرا شود، بايد برنامه را از پايه براي آن زبان برنامه نويسي بنويسيم.البته، اين مسئله ميتواند بسيار زمانبر و پرهزينه باشد، مخصوصاً اگر براي هر زبان به يك تيم برنامه نويسي جدا احتياج داشته باشيم.فريموركهاي كراسپلتفرم مثل آيونيك (Ionic)، زامارين (Xamarin) و رياكت نيتيو به شما امكان نوشتن كد پايهاي را ميدهند كه روي هر دو سيستمعامل اجرا ميشود.نميخواهيم ابنجا دربارهي چگونگي كاركرد آنها صحبت كنيم، اما همهي آنها معايبي دارند.مثلاً همهي آنها سرعت بسيار پاييني دارند، امكان استفاده از ويژگيهاي كمتري را فراهم ميكنند، مشكلات امنيتي دارند و فرايند برنامه نويسي در آنها سختتر و با مشكلات بيشتري همراه است.
آموزش ري اكت نيتيو براي برنامه نويسي اپليكيشن iOS با جاوا اسكريپت
بهتر نيست كه از رياكت نيتيو (React Native) يا فلاتر (Flutter) استفاده كنيم؟به خاطر وجود چنين مشكلاتي، برنامههاي نيتيو هميشه براي نوشتن عملكردي نسبتاً پيچيده انتخاب برتر بودهاند.
گوگل، فريمورك كراسپلتفرم ديگري را به نام فلاتر (Flutter) عرضه كرده است.بهنظر ميرسد كه فلاتر برنامههايي با سرعت و ظاهري خوب ميسازد و نسبت به راهكارهاي قبلي فرايند برنامه نويسي سريعتر و آسانتري دارد و اسناد آن نيز مناسبند.فلاتر تازه به ورژن استيبل (stable(1.0 رسيده است و گوگل بسيار از آن حمايت ميكند، اما به نظر نميرسد كه انجمن اندرويد فعلاً برنامهاي براي آن داشته باشد.برخي معتقند فلاتر آيندهاي روشن دارد، برخي ميگويند به احتمال زياد گوگل چند سال بعد آن را متوقف ميكند و برخي نيز نظرشان اين است كه شهرت آن نسبت به حال حاضر تغييري نخواهد كرد.بهعلاوه، فلاتر هنوز نميتواند مثل يك اپليكيشن نيتيو، از تمامي ويژگيها و كتابخانهها استفاده كند.
بحث را كوتاه كنيم.
اگر ميخواهيد برنامه نويسي موبايل را فقط براي سرگرمي ياد بگيريد، يا استارتآپي داريد كه فقط محتوايي ساده را نمايش ميدهد و به ويژگيهايي پيچيده نياز ندارد، ميتوانيدبلافاصله يادگيري يكي از فريموركهاي كراسپلتفرم را شروع كنيد (و ديگر لازم نيست اين پست را بخوانيد).اگر ميخواهيد به عنوان يك برنامه نويس كار كنيد، و شانس خود را براي پيدا كردن يك شغل بالا ببريد، بايد پايهاي قوي بسازيد و اول برنامه نويسي نيتيو اندرويد را ياد بگيريد.حتي اگر ميخواهيد برنامهاي به زبان اندرويد بنويسيد و iOS برايتان مهم نيست، بايد بهدنبال نيتيو برويد.
همچنين خوب است بدانيد كه در حال حاضر پيدا كردن آموزشهايي خوب، مثالهاي كد و پاسخهايي مناسب براي سؤالات برنامه نويسي در فلاتر بسيار سختتر است.به عنوان يك مبتدي، اين مسئله فرايند يادگيري را بسيار خستهكنندهتر و طولانيتر ميكند.
برنامه نويسي Fuchsia خيلي زود جاي اندرويد را ميگيرد، مگر نه؟
اگر اخبار مرتبط به گوگل را دنبال ميكنيد، حتما نام فيوشا (Fuchsia) را شنيدهايد.فيوشا سيستمعامل جديدي است كه گوگل درحال توسعهي آن است و ميتواند در آينده جايگزين اندرويد شود، اما هنوز كسي مطمئن نيست.اما حتي اگر اين موضوع درست باشد، چند سالي طول ميكشد تا اين اتفاق بيفتد.حتي آن موقع نيز، اپليكيشنهاي اندرويد روي فيوشا اجرا خواهند شد (خبرهايي اين موضوع را تأييد كردهاند)، چون رها كردن ميليونها اپليكيشن اندرويدي براي گوگل بسيار پرهزينه است و گوگل نميتواند تمامي برنامهنويسان اندرويد را رها كند.
در حال حاضر، خيلي نگران اين فريموركهاي جديد نباشيد.برنامه نويسي نيتيو اندرويد به اين زوديها از رده خارج نخواهد شد و وقتي در آن تجربه كسب كرديد، يادگيري زبان يا فريموركي ديگر بسيار سادهتر ميشود.اين طور نيست كه بعد از يادگيري، فقط به اين دليل كه به اشتباه زبان يا پلفترمي نادرست را انتخاب كردهايد، دوباره مجبور شويد از صفر شروع كنيد.با فهم منطق برنامه، ساختماندادهها و الگوهاي طراحي كدهاي خود و ديگران، داريد مهارت مهندسي نرمافزار را در خود ميسازيد كه از يادگيري زبان يا فريمورك فراتر ميرود.چيزي را انتخاب كنيد و تا زماني كه مبتدي هستيد، رهايش نكنيد.
خُب، ميخواهم برنامه نويسي نيتيو اندرويد را ياد بگيرم! بايد با جاوا شروع كنم يا كاتلين (Kotlin)؟
حالا كه مسير برنامه نويسي نيتيو را انتخاب كردهايم (حداقل اينطور فرض ميكنيم، چون هنوز داريد اين مقاله را ميخوانيد)، بايد بين اين دو زبان يكي را انتخاب كنيم، چون اپليكيشنهاي نيتيو اندرويد فقط به زبان جاوا نوشته نميشوند.
احتمالاً شنيدهايد كه گوگل كاتلين را در سال 2017 و در كنفرانس Goole I/O به عنوان زبان رسمي first-class برنامه نويسي نيتيو اندرويد معرفي كرد.كاتلين يك زبان برنامه نويسي مدرن است كه مزاياي بسيار بيشتري نسبت به جاوا دارد. مثلاً سينتكس دقيقتري دارد، null-safe ااست (يعني خطاهاي كمتري رخ ميدهد) و ويژگيهاي بسياري دارد كه كدنويسي را سادهتر ميكند. در اين مرحله، ميتوانيد بدون يادگيري جاوا، واقعاً اپليكيشن نيتيو اندرويد بسازيد.پس آيا به عنوان يك مبتدي، بايد از جاوا بگذريد و مستقيم به سراغ كاتلين برويد؟ يا بايد اول جاواي معروف را ياد بگيريد؟يا شايد بايد يادگيري هر دو را همزمان با هم شروع كنيد؟
خلاصهي مطلب: با جاوا شروع كنيد.منابع يادگيري جاوا بسيار بيشترند و برنامهنويسان نيز نسبت به كاتلين، از آن بيشتر استفاده ميكنند.در حال حاضر، يادگيري كاتلين بدون يادگيري همزمان جاوا امكانپذير نيست، پس بايد هردو را همزمان با هم ياد بگيريد كه بيشتر سردرگم ميشويد.كاتلين را فعلاً رها كنيد و پايهتان را قوي كنيد. مخصوصاً اگر ميخواهيد در آينده برنامهنويس اندرويد نباشيد.پايهي كدهاي بسياري از شركتها به زبان جاوا نوشته شده است و فرصتهاي شغلي جاوا بسيار بيشتر از كاتلين است.بيشتر مشاغل امروز نيز داشتن مهارت در كدنويسي جاوا را الزامي ميدانند، اما برنامه نويسي كاتلين تنها يك مزيت محسوب ميشود.و با اينكه گوگل بسيار از كاتلين حمايت ميكند، برنامهاي براي حذف پشتيبانيِ جاوا ندارد.يعني هر دو به صورت يكسان زبان first-class معتبري هستند كه تواناييهايي مشابه در برنامه نويسي اندرويد دارند (اگرچه كاتلين انجام برخي كارها را سادهتر ميكند).
تفاوت Angular و React
وقتي كمي پيش رفتيد و جاوا را تا حدي مناسب ياد گرفتيد، هنوز ميتوانيد كاتلين را ياد بگيريد.اصلاً مشكلي ندارد. همانطور كه قبلا هم گفتيم، ياد گرفتن برنامه نويسي به معني حفظ يك زبان مشخص نيست، چون يك زبان تنها يك ابزار است.بعد از اينكه به جاوا مسلط شديد، يادگيري كاتلين تنها چند هفتهاي طول ميكشد و ميتوانيد از هر دو زبان به صورت تعاملي در يك پروژه استفاده كنيد.پس رفتن از جاوا به كاتلين كاري مشكل نخواهد بود.
اما نميدانم از كجا شروع كنم!
بايد كتاب يا دورههاي آموزشي بخرم؟به طور كلي، بهترين روش براي يادگيري برنامه نويسي ساخت پروژهي خودتان است. اينكه هر مشكلي كه پيش ميآيد يا مرحلهي بعدي را جستوجو كنيد.براي اين كار نيازي به كتاب يا دورههاي آموزشي نداريد. در ادمهي اين مقاله بيشتر دربارهي اين مسئله صحبت خواهيم كرد.
با اين وجود، اگر تازه شروع به كار كردهايد، احتمالاً اصلاً نميدانيد از كجا شروع كنيد.
آموزش برنامه نويسي اندرويد با اندرويد استديوشايد حتي نميدانيد كه چگونه يك IDE (“محيط يكپارچهي توسعهي نرمافزار”، برنامهاي كه در آن كد مينويسيد) را، مثل اندرويد استوديو، (Android Studio) نصب كنيد.در اين مرحله، اگر بخواهيد خودتان همهچيز را با سرچ گوگل بفهميد، يادگيري بسيار پيچيده و گيجكننده خواهد شد.به همين دليل، پيشنهاد ميشود كه براي يادگيري مسائل پايه از يك كتاب يا دورهي آموزشي بسيار خوب استفاده كنيد.
مسئلهي مهم اين است كه فقط دورههاي آموزشي را نگاه نكنيد يا كتاب را نخوانيد، بلكه خودتان مثالها يا تمرينهاي آنها را انجام دهيد.حتي اگر فكر ميكنيد كه در حين ديدن همهچيز را ميفهميد، وقتي براي اولين بار بدون كمك شروع به كد نويسي ميكنيد، تازه متوجه ميشويد كه همهچيز را به خاطر نداريد.اين مسئله كاملاً عادي است و همهي ما در نقطهاي از يادگيري به اين مشكل برخوردهايم. تنها زماني كد نويسي را ياد ميگيريد، كه به صورت مداوم كدهاي زيادي بنويسيد.
دورههاي آموزش برنامه نويسي اندرويد
پيشنهاد ميكنم كه دورههاي آموزشي اندرويد را هرچه سريعتر تمام كنيد. دورههاي بسيار طولاني خيلي مؤثر نيستند.وقتي كسي بهتان ميگويد كه مرحله به مرحله چه كاري كنيد، احساس راحتي ميكنيد و اين خيلي مؤثر نيست. هرچقدر بيشتر با يك مفهوم يا مشكل درگير شويد، بيشتر ياد ميگيريد.ميتوانيد سطح درگير شدن خود با محتوا را بالا ببريد.فقط كد مثالهاي آموزشي را مستقيماً ننويسيد، اول سعي كنيد بدون كمك خودتان آن را بفهميد و تنها وقتي به مشكلي غيرقابل حل برخورديد، پاسخ آن را در دورهي آموزشي ببينيد و از آن كمك بگيريد.حتي ميتوانيد كاري بهتر انجام دهيد. از اسامي كلاسها، متدها و متغيرهاي ديگري استفاده كنيد. layout را عوض كنيد و مثال را كمي متفاوت از دورهي آموزشي كدنويسي كنيد.اين كار ميتواند سطحِ سختيِ آموزش را كمي بالاتر ببرد و مجبورتان كند كه فكر كنيد. اگر از اين كار لذت ميبريد، در تمام طول دورهي آموزشي اين كار را انجام دهيد و براي تمام كردن آن عجله نكنيد.به هرحال، احتمالاً خيلي زود خسته ميشويد و تمرينهاي كدنويسي شبيه تمرينهاي رياضي مدرسه ميشوند.اگر اين اتفاق افتاد و انجام كارها را عقب انداختيد، از ديدن ادامهي دورهي آموزشي صرف نظر كنيد و براي داشتن يك ايدهي كلي از مفاهيم، دورهي آموزشي را سريعاً تمام كنيد.بعداً ميتوانيد با روشهاي يادگيري جذابتري به آموختههايتان اضافه كنيد.
دوره آموزش برنامه نويسي اندرويد آكادمي آمانج يكي از كامل ترين دوره هاي موجود است. براي كسب اطلاع بيشتر اينجا كليك كنيد.
آيا بايد تمامي آموزشها را گام به گام و كامل دنبال كنم؟
مشكلِ ديگرِ آموزشهايِ اصلاحشده اين است كه تنها روشها و ايدههاي يك يا چند نفر را دنبال ميكنيد. اين مسئله حوزهي ديدتان را در يادگيري مسائل پيچيدهتر محدود ميكند.با دنبال كردن انواع مختلف محتوا مثل پستهاي بلاگ، آموزشهاي Youtube و مباحت آنلاين موجود ميتوانيد رويكردهاي مختلف برنامهنويسان زيادي را ببينيد.فقط آنها را ببينيد يا بخوانيد و به اين ترتيب حوزهي ديد گستردهتري خواهيد داشت. از طرفي كتابها و دورههاي آموزشي به سرعت قديمي ميشوند، چون دنياي برنامه نويسي بهسرعت تكامل مييابد.همانطور كه قبلا هم گفتيم، هرچقدر آموزش پايهايتر باشد، شانس قديمي شدن آن كمتر است، چون مطالب پايه تغيير چنداني نميكنند.آموزشهاي كوتاه نيز قديمي ميشوند، اما از آنجايي كه ميتوانيد تعداد زيادي از آنها را در مدت زماني كوتاه ببينيد، دربارهي مسائلي كه در طول زمان تغيير ميكنند و مسائلي كه ثابت ميمانند، ديدگاه بهتري به شما ميدهند.
- ۹ بازديد
- ۰ نظر