دنیای تکنولوژی و هوش مصنوعی

دنیای تکنولوژی و هوش مصنوعی

دنیای تکنولوژی و هوش مصنوعی

دنیای تکنولوژی و هوش مصنوعی

  • ۰
  • ۰

ابزار ساخت بازی Game Builder توسط گوگل معرفی شد. با استفاده از آن خواهید توانست بدون نیاز به داشتن دانش برنامه‌نویسی، از طریق درگ اند دراپ عناصر مختلف، بازی‌های ویدیویی جذاب درست کنید

 

توسعه‌دهندگان بازی‌‌های ویدیویی با چالش‌های زیادی رو به رو هستند. دلیل این موضوع، نبود راهی مشخص به منظور ساخت یک بازی جدید برای راضی نگه داشتن تمامی گیمرها است. حتی برای بازی‌های بسیار محبوب و دارای امتیازهای بالا نیز همیشه معترضانی پیدا خواهد شد. این دسته‌ از گیمرهای سخت‌پسند باید توسعه بازی موبایل اختصاصی خود را آغاز کنند!

مشکل این روش، نیاز به یادگیری برنامه‌نویسی و سپس کار با ابزارهای ساخت بازی حرفه‌ای است. گیمرها، اعم از سخت‌پسند یا غیر سخت‌گیر، دوست دارند وقت آزاد خود را به وسیله اجرای یک بازی پر کنند و تمایلی به یادگیری برنامه‌نویسی ندارند. Area 120 متعلق به گوگل، ابزار ساخت بازی Game Builder را برای این گیمرها ایجاد کرده است. با استفاده از آن بدون نیاز به داشتن دانش برنامه‌نویسی و کار با ابزارهای حرفه‌ای ساخت بازی‌های ویدیویی قادر خواهید بود از طریق درگ اند دراپ عناصر مختلف، یک بازی جدید برای خود ایجاد کنید!

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

آن دسته از کاربرانی که با زبان برنامه‌نویسی جاوااسکریپت آشنایی دارند، قادر خواهند بود به وسیله کدنویسی قسمت‌هایی از بازی، آن را حرفه‌ای‌تر کرده و دقیقا به شکل دلخواه در بیاورند. خوشبختانه ابزار ساخت بازی Game Builder رایگان است. برای استفاده از این بازی‌ساز به وب سایت Steampowered مراجعه کنید.

منبع :ubergizmo

  • behnam behnam
  • ۰
  • ۰

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

 

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

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

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

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

منبع : theverge

  • behnam behnam
  • ۰
  • ۰

چند روز قبل شایعاتی به گوش رسید مبنی بر اینکه گوگل می خواهد شاخه ای از زبان برنامه نویسی اپن سورس اپل یعنی سوئیفت (Swift) را به خدمت بگیرد، البته مشخص نبود آیا این کمپانی تغییرات خاص خودش را در آن اعمال می کند یا خیر تا اینکه «کریس لتنر» خالق سوئیفت به شفاف سازی ماجرا پرداخت:

افراد زیادی در گوگل از سوئیفت استفاده می کنند و به همین دلیل به یکپارچگی و اجماع نیاز داریم، بنابراین تصمیم گرفتیم موضوع را علنی کنیم.

 

ظاهراً گوگل کپی ویژه ای از این کد را می خواهد تا بتواند تغییراتی را در آن اعمال نموده و به مخزن رسمی سوئیفت اضافه نماید. همین حالا هم در مخزن رسمی سوئیفت بخش تازه ای به نام «ساپورت فیوشا» (Fuchsia Support) ایجاد شده و یکی از توسعه دهندگان مطرح گوگل به نام «زک بولینگ» که چند سال قبل «آبجکتیو C» را به اندروید پورت کرد هم این موضوع را تأیید کرده است.

 

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

ردپای اکثر زبان های برنامه نویسی در فیوشا دیده می شود

توسعه سیستم عامل جدیدی به نام فیوشا (Fuchsia) توسط گوگل بر هیچکس پوشیده نیست، اما نکته مبهم اینجاست که هیچکس نمی داند این OS چه استفاده ای دارد و جایگزین چه چیزی می شود. هسته این سیستم عمدتاً با استفاده از زبان های C و ++C نوشته شده و رابط کاربری آن هم بر پایه Dart است، اما ردپای زبان های دیگری مانند Go، پایتون، Rust و حالا سوئیفت هم در آن دیده می شود.

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

 

یکی از احتمالات این است که گوگل، فیوشا را به عنوان پلتفرم پایه و همه کاره برای اپلیکیشن ها توسعه می دهد تا هسته اصلی برنامه را به زبان دلخواه خود (Go، سوئیفت، Rust، جاوا اسکریپت و غیره) بنویسید و سپس UI اختصاصی را برای پلتفرم های مختلف (اندروید، iOS، فیوشا، لینوکس، ویندوز و وب) به آن اضافه کنید.

در مجموع، خوره های برنامه نویسی در دوران هیجان انگیزی به سر می برند و شاید اکنون بهترین زمان باشد تا به توسعه اپلیکیشن روی بیاورید.

  • behnam behnam
  • ۰
  • ۰

اپل به تازگی استارتاپ کانادایی «Buddybuild» را تصاحب کرده که در زمینه ابزارهای توسعه نرم افزار برای برنامه نویسان تخصص دارد. این خرید اپل به توسعه دهندگان اپلیکیشن های اپ استور کمک می کند که راحت تر برنامه های خود را توسعه دهند.

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

کمپانی Buddybuild در چه زمینه ای فعالیت می کرد؟

بر اساس اطلاعات پروفایل لینکدین Buddybuild در سال 2015 در ونکووِر تأسیس شده و 40 کارمند در آن مشغول به کار بوده اند. این استارتاپ اخیراً به ارزشی معادل 7.6 میلیون دلار دست یافته بود.

 

 

کمپانی یاد شده در بیانیه خود اعلام کرده بود: «ما همیشه به این که یک شرکت کانادایی هستیم افتخار می کنیم و از حضور در ونکووِر خرسندیم،؛ [شهری که] میزبان توسعه دهندگان و مهندسان با استعداد است».

بر اساس ادعای پیشین این استارتاپ، Buddybuild تنها پلتفرم یکپارچه موبایل را ساخته است. بدین ترتیب ابزار آنها برای تیم های برنامه نویسان، تغییر کدها در پروژه های بزرگ را بسیار ساده می کند.

چه اتفاقی برای سایر خدمات این کمپانی در حوزه اندروید خواهد افتاد؟

با این حال برنامه نویسانی که از ابزارهای نرم افزای این کمپانی برای ساخت اپ های اندروید استفاده می کردند، پس از 10 اسفند ماه سال جاری قادر به استفاده از آن نخواهند بود.

 

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

اپل ادعا می کند که همواره تلاش کرده توسعه دهندگان نرم افزارهای مبتنی بر سخت افزارهای خود را راضی نگه دارند. به نظر می رسد تصاحب استارتاپ یاد شده، کمپانی ساکن کوپرتینو را به این هدف نزدیک تر نماید.

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

  • behnam behnam
  • ۰
  • ۰

تیم کوک اخیرا در جریان سخنرانی برای دانشجویان به اهمیت یادگیری برنامه نویسی و اثرات مخرب شبکه های اجتماعی پرداخته است.

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

روز  گذشته تیم کوک، مدیرعامل اپل نیز طی سخنرانی برای داشجویان Harlow College بریتانیا به این مساله اشاره کرد:

من بچه ندارم اما برای برادزاده ام محدودیت هایی قائل شده ام و ترجیح می دهم او در شبکه های اجتماعی حضور نداشته باشد.

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

به هر حال سن قانونی برای افتتاح حساب در فیسبوک 13 سال است و باید دید این نوجوان خود چه تصمیمی دارد. هرچند بسیاری عقیده دارند که تعداد کاربران زیر 13 سال این شبکه اجتماعی بالغ بر 7.5 میلیون نفر است.

تیم کوک

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

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

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

او عقیده دارد که در حال حاضر برابری جنسیتی در موسسه های آموزش علوم کامپیوتر وجود ندارد اما با آموزش برنامه نویسی در سنین پایین می توان به این مهم دست پیدا کرد.

  • behnam behnam
  • ۰
  • ۰

بر اساس گزارش موسسه Redmonk زبان برنامه نویسی سوئیفت اپل برای اولین بار توانسته در آخرین سه ماهه جاری میلادی، به لیست 10 زبان برتر برنامه نویسی راه یابد.

موسسه مذکور که در زمینه تحلیل های مرتبط با توسعه دهندگان نرم افزار فعالیت می کند، از سال 2011 تاکنون در دوره های 3 ماهه اقدام به انتشار لیست زبان های برنامه نویسی محبوب می نماید. بر اساس گزارش این موسسه زبان سوئیفت از ابتدای معرفی تاکنون بیشترین میزان رشد استفاده در بین برنامه نویسان را داشته است.

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

محور افقی میزان محبوبیت زبان ها در GitHub و محور عمودی میزان محبوبیت در Stack Overflow را نشان می دهد. برای مشاهده نمودار در اندازه بزرگتر روی آن کلیک کنید.

موسسه Redmonk اطلاعات آماری خود را از کاربران وبسایت های محبوب توسعه دهندگان  GitHub و Stack Overflow تهیه کرده. در واقع اطلاعات کدها از GitHub و اطلاعات مرتبط با بحث های برنامه نویسان از Overflow به دست آمده و از ترکیب این موارد، آمار مذکور حاصل شده است.

البته در عین حال Redmonk اشاره کرده که این روش نشان دهنده اطلاعات آماری دقیقی از استفاده فعلی از زبان های برنامه نویسی نیست. ولی می تواند ارتباط بین بحث های مرتبط با زبان های برنامه نویسی و میزان استفاده از آنها را نشان دهد و میزان پتانسیل آینده پذیرفته شدن آنها (از سوی برنامه نویسان) را نمایان کند.

به عبارت دیگر ممکن است میزان استفاده از  زبان های برنامه نویسی متفاوت با این رتبه بندی باشد، ولی آمار به دست آمده از GitHub و Stack Overflow می تواند به ما نشان دهد که برنامه نویسان در حال گرایش به سمت کدام زبان ها هستند. در ادامه می توانید لیست ده زبان برنامه نویسی برتر را مشاهده نمایید:

1- جاوا اسکریپت

2- جاوا

3- پایتون

4- PHP

5- #C

6-  ++C

7- CSS

8- Ruby

9- C

10- سوئیفت مشترکاً با آبجکتیو-سی

  • behnam behnam
  • ۰
  • ۰

در این جلسه از آموزش می‌خواهیم از برنامه‌ی اکلیپس یا به عبارتی از IDE اکلیپس برای نوشتن برنامه‌های جاوا استفاده کنیم. IDE مخفف: Integrated Development Environment است. در واقع IDE‌ ها تمام ابزارهای مورد نیاز برای برنامه نویسان را به طور منظم فراهم می‌کنند تا برنامه نویسان فقط روی نوشتن و طراحی برنامه تمرکز کنند و خود را درگیر مسائل جزئی مثل کامپایل کردن برنامه نکنند.

سلسله مطالب آمورش جاوا

 برای هریک از زبان‌های برنامه نویسی، IDE های بسیار زیادی وجود دارد و می‌توان با همه‌ی آن‌ها برنامه را به درستی نوشت و اجرا کرد. اما از میان تمام IDE ها معمولا همیشه یک IDE از بقیه سرتر و بهتر است. به عنوان مثال برای زبان برنامه نویسی #C (سی شارپ) بهترین IDE، ویژوآل استودیو است. برای زبان جاوا هم IDE های زیادی وجود دارد که معروف‌ترین و محبوب‌ترین آن‌ها عبارت اند از:

  • اکلیپس (eclipse)
  • اوراکل نِت بینز (Oracle NetBeans)
  • جِت برینز اینتلیج آی دیا (Jetbrains Intellij Idea)

اکلیپس یک IDE اُپن سورس (Open Source) و مبتنی بر پلاگین (Plug-in)، و بسیار مناسب برای تولید برنامه‌های مدرن جاوا (JavaEE) است. زیرا از آنجایی که جاوا ای ای مجموعه‌ای از تکنولوژی ها است، بنابراین پلاگین‌های مختلفی برای تکنولوژی‌های مختلف تولید شده است و به راحتی می‌توان آن‌ها را از اینترنت دانلود و به اکلیپس اضافه کرد. ممکن است در ذهن شما این سوال به‌وجود بیاید که پلاگین چیست!؟ پلاگین‌ها (افزونه‌ها) برنامه‌های کوچکی هستند که توسط شرکت‌های مختلف تولید می‌شوند و با نصب آن‌ها روی یک برنامه، می‌توان قابلیت‌های جدیدی را به آن برنامه اضافه کرد. به عنوان مثال، ADT یکی از پلاگین‌های معروف برای توسعه‌ی اندروید روی اکلیپس است. متاسفانه اکلیپس دارای باگ‌های فراوانی است و علت آن هم هسته اکلیپس نیست، بلکه باگ‌هایی است که در پلاگین‌های آن موجود است. بنابراین تا می‌توان باید سعی کرد از پلاگین‌هایی که توسط شرکت‌های معتبر تولید شده‌اند استفاده کرد.

 نت بینز یک IDE حرفه‌ای و به اصطلاح همه فن حریف است. این IDE توسط شرکت اوراکل نوشته شده است و می‌توان به جز جاوا، برای زبان‌های برنامه‌نویسی دیگری هم مثل: PHP, C++, Groovy و ... نیز استفاده کرد. در این IDE هم مانند اکلیپس می‌توان پلاگین‌هایی را اضافه کرد. اما بسیاری از سرویس‌ها به صورت داخلی در این IDE پیاده‌سازی شده‌اند. به عنوان مثال وب سرور Apache Tomcat (آپاچی تامکت) به صورت داخلی در این IDE پیاده‌سازی شده است و دیگر نیازی نیست تا به صورت جدا گانه این وب سرور را دانلود و نصب کنیم. اما یکی از ویژگی‌های مهم این IDE، این است که ابزارهای بسیار حرفه‌ای برای طراحی رابط گرافیکی کاربر دارد و یکی از مشکلات بزرگ برنامه نویسان جاوا را حل کرده است.

 آخرین IDE‌ای که در مورد آن صحبت می‌کنیم، Jetbrains Intellij Idea است، که معنی "تند مغزها؛ ایده هوشمند" را دارد. این IDE یکی از بهترین ویرایشگر‌ها برای زبان برنامه نویسی جاوا است که دارای هوش فوق العاده‌ای است. اما با توجه به تجربیات شخصی و مطالعاتی که بنده در این زمینه داشتم، این IDE اصلا مناسب برای برنامه‌های مدرن جاوا (JavaEE) نیست و صرفا برای برنامه نویسی جاوا نسخه‌ی استاندارد آن و برنامه نویسی وب در جاوا می‌توان از آن استفاده کرد. همچنین این IDE همانند اکلیپس و نت بینز امکان اضافه کردن پلاگین را دارد.

باتوجه به بررسی‌های فوق، ما برای این دوره‌ی آموزشی، بهترین، محبوب‌ترین و ساده‌ترین IDE، یعنی اکلیپس را انتخاب می‌کنیم. در ادامه‌ی این آموزش، ما نحوه‌ی دانلود این IDE را آموزش می‌دهیم.

 برای دانلود اکلیپس باید به سایت اکلیپس مراجعه کنید. بعد از وارد شدن به سایت اکلیپس، با نمایی مشابه تصویر زیر مواجه می‌شوید:

01eclipse01 f18a6

همانطور که در تصویر فوق با یک بیضی سبز رنگ مشخص شده است، بر روی دکمه DOWNLOAD کلیک کنید تا وارد صفحه‌ی زیر شوید:

01eclipse02 93cd4

بعد از اینکه روی دکمه DOWNLOAD کلیک کردید، کمی صفحه را به پایین اسکرول کنید. همانطور که در تصویر فوق مشاهده می کنید، گزینه‌ای که با یک مستطیل قرمز رنگ مشخص شده را انتخاب کنید تا وارد صفحه‌ی زیر شوید:

01eclipse03 a3c0a

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

 01eclipse04 18b87

همانطور که در تصویر فوق با یک بیضی سبز رنگ مشخص شده است، بر روی دکمه‌ی دانلود کنید تا وارد صفخه‌ی زیر شوید:

01eclipse05 97994

در صفحه فوق، کمی منتظر بمانید تا دانلود شروع شود. پیشنهاد می‌شود که از نرم افزار‌های مدیریت دانلود مثل IDM برای دانلود استفاده کنید.

در جلسه‌ی بعدی ما نحوه‌ی استفاده از اکلیپس را آموزش می‌دهیم.

تهیه شده درزومیت

  • behnam behnam
  • ۰
  • ۰

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

ما در این دوره آموزشی، زبان برنامه نویسی جاوا را از ابتدا و از صفر آموزش می‌دهیم. یعنی این دوره آموزشی هیچ پیش نیازی ندارد. تمرکز ما در این دوره روی نسخه استاندارد جاوا، یعنی Java SE است. جاوا زبانی بسیار گسترده و دارای تکنولوژی‌های بسیار زیادی است. ما در این دوره آموزشی قرار هست وارد این دنیای بزرگ شویم و مقدمات جاوا و در کل برنامه نویسی را یاد بگیریم.

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

نکته: توجه داشته باشید که مفاهیم ابتدایی بسیار مهم هستند و شما باید این مفاهیم را یاد بگیرید. تصور کنید روزی شما به یک برنامه نویس حرفه‌ای جاوا تبدیل شده‌اید. اما نمی‌دانید که جاوا در چه سالی بوجود آمده و توسط چه کسی ساخته شده و اصلا هدف از ساخت جاوا چه بوده!؟ بنابراین چند آموزش ابتدایی این دوره آموزشی که خیلی وارد مبحث کد نوشتن نمی‌شوند را به خوبی یاد بگیرید و سَر سَری از این مطالب عبور نکنید.

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

تا اینجای کار ما با برنامه نویسی آشنا شده‌ایم و از اینجا به بعد وارد مفاهیم سخت‌تر برنامه نویسی، مثل کنترل خطا و استثناها در برنامه، برنامه نویسی چند نخی، آشنایی با سیستم فایل، جنریک‌ها، کاراکترها و رشته‌ها، اَنوتیشِن و ... می‌شویم و بعد در آخر هم نگاهی گذرا به مفاهیم گرافیک در جاوا خواهیم داشت.

سخن آخر اینکه، برنامه نویسی هم مانند هر کاره دیگری نیاز به علاقه، پشت کار و اراده ای محکم و پولادین دارد. اگر می‌خواهید در این رشته موفق شوید، از همین ابتدای کار، این دوره آموزشی را با شور و شوق آغاز کنید. اگر با اراده و با گذشتن از کارهای غیر ضروری و وقت گذاشتن روزانه (در ابتدای کار حدودا دو ساعت در روز) برنامه نویسی را شروع کنید، مطمئنا در پایان این دوره آموزشی به یک برنامه نویس Java SE کار حرفه‌ای تبدیل می‌شوید و آماده‌ برای ورود به دنیای JavaEE هستید.

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

سایر منابعی که ما برای این دوره آموزشی استفاده کرده‌ایم:

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

طی روزهای پیش رو با آموزش جاوا از زومیت همراه ما باشید.

تهیه شده درزومیت

  • behnam behnam
  • ۰
  • ۰

بر اساس تعاریف جدید برنامه‌نویسی سطح پائین و برنامه‌نویسی سیستم یکی نیستند و این دو مفهوم به اشتباه یکسان فرض شده‌اند.

ترکیب دو ایده‌ی برنامه‌نویسی سطح پائین (کار با جزئیات سخت‌افزاری و پیاده‌سازی ماشین) و طراحی سیستم (ساخت و مدیریت یک مجموعه‌ی پیچیده از مؤلفه‌های مرتبط) به نظر غیرضروری می‌رسد؛ اما این قضیه تا چه اندازه صحیح است؟ و از تعریف مجدد سیستم‌ها به چه نتیجه‌ای می‌توان رسید؟

دهه‌ی ۱۹۷۰: پیشرفت اسمبلی

برای درک تکامل اصطلاح برنامه‌نویسی سیستم بازگشت به منشأ سیستم‌های کامپیوتری مدرن ضروری است. دقیقا مشخص نیست چه کسی این عبارت را اختراع کرده است اما بر اساس پژوهش‌ها تلاش‌های جدی برای تعریف سیستم‌های کامپیوتری تقریبا از اوایل دهه‌ی ۷۰ آغاز شده است. در مقاله‌ای با نام زبان‌های برنامه‌نویسی سیستم به این تعریف اشاره شده است:

یک برنامه‌ی سیستمی مجموعه‌ای یکپارچه از برنامه‌های فرعی یا زیربرنامه است، زیربرنامه‌ها یک مجموعه‌ی یکپارچه و بزرگ‌تر از مجموعه اجزا را تشکیل می‌دهند که اندازه و پیچیدگی آن فراتر از یک حد مشخص است. از نمونه‌های متداول می‌توان به سیستم‌هایی برای برنامه‌نویسی چندگانه، ترجمه، شبیه‌سازی، مدیریت اطلاعات و اشتراک‌گذاری زمانی اشاره کرد. فهرست زیر مشخصات برنامه‌های سیستمی را ارائه می‌دهد که بعضی از آن‌ها را می‌توان در برنامه‌های غیرسیستمی هم پیدا کرد و البته ممکن است یک سیستم مشخص تمام این ویژگی‌ها را به صورت یکجا نداشته باشد:

۱. مسئله‌ی قابل حل ماهیت گسترده‌ای دارد و شامل تعداد زیادی مسائل فرعی و متنوع است.

۲. از برنامه‌ی سیستمی برای پشتیبانی از برنامه‌های کاربردی و نرم‌افزاری دیگر استفاده می‌شود اما درعین‌حال می‌تواند بسته‌ی کاملی از برنامه‌ها هم باشد.

۳. برنامه‌ی سیستمی برای تولید پیوسته طراحی شده است نه به عنوان راه‌حلی یک جا برای حل یک مشکل در برنامه‌ها

۴. برنامه‌ی سیستمی از نظر تعداد و انواع ویژگی‌های تحت پشتیبانی به صورت پیوسته در حال تکامل است.

۵. یک برنامه‌ی سیستمی به یک ساختار یا برنامه‌ی مشخص داخل و میان ماژول‌ها (برای مثال برقراری ارتباط) نیاز دارد و معمولا توسط بیش از یک شخص یا گروهی از اشخاص طراحی و پیاده‌سازی می‌شود.

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

زبان سیستم

هدف از زبان برنامه‌نویسی سیستم فراهم کردن زبانی است که بتوان بدون نگرانی در مورد دستکاری بیت‌ها از آن استفاده کرد و درعین‌حال به کدی دست یافت که عملکرد آن از کدهای دستی بهتر باشد. چنین زبانی باید اختصار و خوانایی زبان‌های سطح بالا را با بازدهی فضا و زمان و دسترسی به امکانات سیستم‌عامل و ماشین زبان اسمبلر را ترکیب کند. زمان طراحی، نوشتن و اشکال‌زدایی باید بدون تحمیل سربار بر منابع سیستمی به حداقل برسند. پژوهشگرهای CMU زبانی به نام BLISS (زبانی برای برنامه‌نویسی سیستم) را منتشر کرده‌اند که به این صورت تعریف می‌شود:

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

مؤلفان، زبان پیاده سازی را بالاتر از اسمبلی و پائین‌تر از زبان طراحی می‌دانند

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

در اینجا مؤلفان، زبان پیاده‌سازی را بالاتر از اسمبلی و پائین‌تر زبان طراحی می‌دانند. بر اساس پژوهش‌های قبلی، طراحی و پیاده سازی سیستم هرکدام زبان مجزایی دارند. آخرین مدخل مربوط به برنامه‌نویسی سیستم را می‌توان در یک متن آموزشی در مورد یادگیری برنامه‌نویسی سیستم مشاهده کرد که در ‍۱۹۷۲ نوشته شده است.

اما تعریف دقیق برنامه‌نویسی سیستم چیست؟

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

در اولین روزهای اختراع کامپیوتر، مردم با دستورالعمل‌های ابتدایی بین دو حالت On و Off با کامپیوتر ارتباط برقرار می‌کردند. خیلی زود مردم به دنبال دستورالعمل‌های پیچیده‌تر رفتند. برای مثال می‌خواستند خروجی این مسأله را در کامپیوتر ببینند: X=30*Y؛ با توجه به این که Y=10 در نتیجه X کدام است؟ کامپیوترهای کنونی بدون برنامه‌های سیستمی قادر به درک چنین زبانی نیستند.

برنامه نویسی سیستممبانی برنامه‌نویسی سیستم

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

دهه‌ی ۱۹۹۰: ظهور اسکریپت‌نویسی

در دهه‌ی ۷۰ و ۸۰ اغلب پژوهشگرها برنامه‌نویسی سیستم را نقطه‌ی مقابل برنامه‌نویسی اسمبلی می‌دانستند. در آن دوره ابزار خوبی برای ساخت سیستم‌ها وجود نداشت (البته هیچ اطمینانی از وجود Lisp در میان این زبان‌ها وجود ندارد هیچ کدام از منابع به Lisp اشاره نکرده‌اند، با این حال ماشین‌های Lisp وجود داشتند).

در اواسط دهه‌ی ۹۰، با ظهور زبان‌های اسکریپت‌نویسی داینامیک تغییرات عمده‌ای در زبان‌های برنامه‌نویسی رخ داد. بهبود سیستم‌های اسکریپت‌نویسی مثل Bash، زبان‌هایی مثل پرل (۱۹۸۷)، Tcl ، پایتون (۱۹۹۰)، Ruby ، PHP  و جاوا اسکریپت (۱۹۹۵) به توسعه‌ی برنامه‌نویسی کمک کرد. این تغییرات در مقاله‌ی تأثیرگذار اوسترهاوت با عنوان  اسکریپت نویسی: برنامه‌نویسی سطح بالای قرن بیست‌ویک (۱۹۹۸) به اوج خود رسیدند. به موج حاصل از این تغییرات دوگانگی اوسترهاوت بین زبان‌های برنامه‌نویسی سیستمی و زبان‌های اسکریپت‌نویسی گفته می‌شود.

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

مقاله‌های مرتبط:

در مقابل، زبان‌های اسکریپت‌نویسی برای چسباندن طراحی شده‌اند: مجموعه‌ای از مؤلفه‌های قدرتمند دارند و در اصل برای اتصال این مؤلفه‌ها با یکدیگر در نظر گرفته شده‌اند. زبان‌های برنامه‌نویسی برای کمک به مدیریت پیچیدگی، Strongly Typed یا وابسته‌ی زیاد به نوع هستند؛ مفهومی که در مقابل Weakly Typed یا وابسته کم به نوع قرار می‌گیرد. به این معنی که باید نوع متغیرها، ورودی‌ها و خروجی‌‌ها توابع و... دقیقا تعیین شوند و کامپایلر پیش از اجرای کدها و رسیدن به مرحله‌ی اجرای Runtime و بیلد، این مورد را بررسی می‌کند. در حالی‌که زبان‌های اسکریپت‌نویسی Typeless (بدون نوع) هستند. برای مثال می‌توان از تعریف متغیر بدون نوع در آن‌ها استفاده کرد و کامپایلر تمام کارها را برعهده دارد. از این‌رو برای ساده‌سازی روابط بین مؤلفه‌ها و توسعه‌ی سریع برنامه‌ها از آن‌ها استفاده می‌شود. گرایش‌های جدید از جمله ماشین‌های سریع‌تر، زبان‌های اسکریپت‌نویسی بهتر، اهمیت فزاینده‌ی واسطه‌های کاربری گرافیکی و معماری‌های مؤلفه‌ای و رشد اینترنت به شدت کاربرد زبان‌های اسکریپت‌نویسی را بالابرده‌اند.

در سطح تخصصی اوسترهاوت اسکریپت‌نویسی و سیستم را در راستای محورهای Type Safety (ایمنی نوع) و دستورالعمل به ازای هر عبارت مقایسه کرده است. Type Safety یا ایمنی نوع به قابلیت یا ویژگی یک زبان برنامه‌نویسی برای جلوگیری یا کاهش رخ دادن Type Errors یا خطاهای ناشی از عدم تطابق نوع گفته می‌شود. برای مثال تعریف متغیری از نوع اعشاری و به کارگیری آن به جای اعداد صحیح، منجر به وقوع یک Type Error می‌شود. اوسترهاوت در سطح طراحی بر نقش‌های جدید هر کلاس زبانی تأکید می‌کند: برنامه‌نویسی سیستم برای ساخت مؤلفه‌ها و اسکریپت‌نویسی برای چسباندن آن‌ها به یکدیگر درنظر گرفته می‌شوند.

نمودار اوسترهاوت

مقایسه‌ی زبان‌های برنامه‌نویسی بر اساس سطح و درجه‌ی Typing آن‌ها (زبان‌های سطح بالاتر دستورالعمل‌های ماشین بیشتری را برای هر عبارت زبانی اجرای می‌کنند) زبان‌های برنامه‌نویسی سیستم مثل C از نوع قوی و سطح متوسط هستند (۵ تا ۱۰ دستورالعمل به ازای هر عبارت). زبان‌های اسکریپت‌نویسی مثل Tcl از نوع ضعیف و سطح بالا هستند (۱۰۰ تا ۱۰۰۰ دستورالعمل به ازای هر عبارت).

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

در این دهه جاوا و #C به غول‌های برنامه‌نویسی که امروزه می‌شناسیم تبدیل شدند. با این حال این دو زبان از ابتدا در گروه زبان‌های برنامه‌نویسی سیستمی قرار نگرفتند و از آن‌ها برای طراحی تعداد زیادی از بزرگ‌ترین سیستم‌های نرم‌افزاری دنیا استفاده شده است. اوسترهاوت به طور آشکار توضیح می‌دهد که در دنیای اینترنت کنونی از جاوا برای برنامه‌نویسی سیستم استفاده می‌شود.

دهه‌ی ۲۰۱۰: مرزها محو می‌شوند

از دهه‌ی گذشته مرز بین زبان‌های اسکریپت‌نویسی و زبان‌های برنامه‌نویسی سیستمی در حال محو شدن است. شرکت‌هایی مثل Dropbox توانستند سیستم‌های مقیاس‌پذیر و بزرگی را روی پایتون توسعه دهند. از جاوا اسکریپت برای تبدیل UI-های پیچیده و بلادرنگ (Real-Time) در میلیاردها صفحه‌ی وب استفاده شده است. طبقه‌بندی تدریجی در پایتون، جاوا اسکریپت و دیگر زبان‌های اسکریپت‌نویسی شدت پیدا کرد و به این صورت گذار از کد اولیه به کد تولید تنها با اضافه کردن اطلاعات نوع ایستا امکان‌پذیر شد.

درعین‌حال منابع انبوه مهندسی برای زبان‌های ایستا (مثل جاوا اسکریپت) و زبان‌های پویا (مثل LuaJIT از Lua یا V8 جاوا اسکریپت و PyPy پایتون) وارد کامپایلرهای JIT شدند و آن‌ها را به رقیب عملکردی سیستم‌های زبان‌های برنامه‌نویسی سیستمی (C++، C) تبدیل کردند. سیستم‌های توزیع‌شده و بزرگی مثل اسپارک در اسکالا نوشته شدند. زبان‌های برنامه‌نویسی جدید مثل جولیا و سویفت هم محدودیت‌هایی را برای زبان‌های زباله‌روب (Garbage Collector) به وجود آوردند.

هیئتی به نام برنامه‌نویسی سیستم در سال ۲۰۱۴ و بعد از آن، شامل بزرگ‌ترین مغزهای زبان‌های برنامه‌نویسی کنونی از جمله بیجارن استروستراپ (خالق ++C)، روب پایک (خالق Go)، آندری آلکساندرسکو (توسعه‌دهنده‌ی D) و نیکو ماتساکیس (توسعه‌دهنده‌ی Rust). زبان برنامه‌نویسی سیستم در سال ۲۰۱۴ را این گونه توصیف می‌کنند:

  • نیکو ماستاکیس: برنامه‌نویسی سیستم مانند نوشتن برنامه‌های سمت کلاینت است، یعنی دقیقا نقطه‌ی مقابل GO قرار می‌گیرد. در این برنامه‌ها تأخیر بالایی وجود دارد و همین‌طور پیش‌نیازهایی مثل امنیت بالا و پیش‌نیازهای دیگر وجود دارند که در سمت سرور ارائه نمی‌شوند.
  • بیجارت استروستراپ: برنامه‌نویسی سیستم از کار با سخت‌افزار سرچشمه گرفته است که بعد از آن پیچیدگی برنامه‌ها افزایش یافت. در برنامه‌نویسی سیستم با این پیچیدگی‌ها سروکار دارید، پس اگر با مشکلاتی مثل محدودیت منابع روبه‌رو شدید، بدانید در قلمروی برنامه‌نویسی سیستم قرار گرفته‌اید. محدودیت‌ها تعیین می‌کنند زبان، برنامه‌نویسی سیستم است یا خیر. آیا حافظه‌ رو به اتمام است؟ آیا زمان شما رو به پایان است؟
  • راب پایک: وقتی برای اولین بار GO را معرفی کردیم آن را یک زبان برنامه‌نویسی سیستم خواندیم و البته متأسفانه افرادی به اشتباه تصور کردند این زبان برای نوشتن سیستم عامل طراحی شده است. به عقیده‌ی ما این زبان مخصوص نوشتن سرور است یا می‌توان گفت یک زبان زیرساخت ابری است. بر اساس یک تعریف دیگر به برنامه‌نویسی که در کلود اجرا شود برنامه‌نویسی سیستم گفته می‌شود.
  • آندری آلکساندرسکو: من چند تست برای تعریف برنامه‌نویسی سیستم اجرا کردم. زبان‌های برنامه‌نویسی سیستم باید امکان نوشتن تخصیص‌گر حافظه را بدهند. در این زبان باید قادر به ساخت یک شماره در اشاره‌گر باشید زیرا عملکرد سخت‌افزار به این صورت است.

جاوا اسکریپت

رابطه‌ی برنامه‌نویسی سیستم با عملکرد بالا چیست؟ با محدودیت‌های منابع و کنترل سخت‌افزاری چطور؟ یا زیرساخت ابری؟ به‌طورکلی به نظر می‌رسد زبان‌هایی مثل C ،C++ ،Rust و D از نظر سطح انتزاع و خلاصه بودن از ماشین متمایز می‌شوند. این زبان‌ها جزئیات سخت‌افزار مثل تخصیص حافظه یا قالب و مدیریت دقیق منابع را نمایش می‌دهند.

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

در مقابل، بهینه‌سازی زبان‌های تفسیر شده بسیار پیچیده است. به‌راحتی نمی‌توان از اجرای قابل‌انتظار کد توسط Runtime اطمینان حاصل کرد. همین مسئله در کامپایلرهای موازی‌ خودکار هم وجود دارد (Vectorizaiton یا برنامه‌نویسی آرایه‌ای یک مدل برنامه‌نویسی نیست. بلکه مانند نوشتن یک واسطه در پایتون است، برای مثال انتظار دارید یک تابع در صورت فراخوانی خروجی int (صحیح) تولید کند).

امروز: بنابراین برنامه‌نویسی سیستم چیست؟

اغلب به برنامه‌نویسی سطح پائین، برنامه‌نویسی سیستم می‌گویند (با اشاره به جزئیات ماشین)؛ اما معنی سیستم چیست؟ با بازگشت به تعریف ۱۹۷۲ می‌توان گفت:

۱.مسئله‌ی قابل حل، ماهیت گسترده‌ای دارد و شامل تعداد زیادی مسائل فرعی و متنوع است.

۲. از برنامه‌ی سیستمی برای پشتیبانی از برنامه‌های کاربردی و نرم‌افزاری دیگر استفاده می‌شود اما درعین‌حال می‌تواند بسته‌ی کاملی از برنامه‌ها هم باشد.

۳. برنامه‌ی سیستمی برای تولید پیوسته طراحی شده است نه به عنوان راه‌حلی یک جا برای حل مشکلی در برنامه‌ها.

۴. برنامه‌ی سیستمی از نظر تعداد و انواع ویژگی‌های تحت پشتیبانی به صورت پیوسته در حال تکامل است.

۵. یک برنامه‌ی سیستمی به یک ساختار یا برنامه‌ی مشخص داخل و میان ماژول‌ها (برای مثال برقراری ارتباط) نیاز دارد و معمولا توسط بیش از یک شخص یا گروهی از اشخاص طراحی و پیاده‌سازی می‌شود.

به نظر می‌رسد این گزینه‌ها بیشتر به مشکلات مهندسی نرم‌افزار اشاره دارند (پیمانه‌ای بودن، قابلیت استفاده‌ی مجدد، تکامل کد) تا مشکلات عملکردی سطح پائین. این یعنی هر زبان برنامه‌نویسی که حل این مشکلات را در اولویت قرار دهد یک زبان برنامه‌نویسی سیستمی است! البته این گزینه‌ها برای تعریف یک زبان برنامه‌نویسی سیستمی کافی نیستند؛ بنابراین می‌توان گفت زبان‌های برنامه‌نویسی پویا یا داینامیک از زبان‌های سیستمی دور هستند.

سی پلاس پلاس

اما مفهوم دقیق این تعریف چیست: زبان‌های تابعی مثل Ocaml و Haskell بیشتر از زبان‌های سطح پائین مثل C یا ++C به سیستم وابسته هستند. هنگام آموزش برنامه‌نویسی باید اصول برنامه‌نویسی تابعی مثل ارزش ثبات، تأثیر سیستم‌های نوع غنی در بهبود طراحی واسطه و استفاده از توابع مرتبه بالاتر را درنظر گرفت. مدارس باید برنامه‌نویسی سیستم و سطح پائین را آموزش دهند.

بنابراین آیا تفاوتی بین برنامه‌نویسی سیستم و مهندسی نرم‌افزار وجود دارد؟ پاسخ منفی است اما مشکل اینجاست که مهندسی نرم‌افزار و برنامه‌نویسی سطح پائین اغلب اوقات به صورت مجزا تدریس می‌شوند. با این حال اغلب کلاس‌های مهندسی نرم‌افزار معمولا بر شعار نوشتن واسطه‌ها و تست‌های مناسب جاوا متمرکز هستند، به همین دلیل لازم است روش طراحی سیستم با توجه به محدودیت‌های زیاد منابع آموزش داده شود.

بهتر است به جای عبارت برنامه‌نویسی سیستم از برنامه‌نویسی سطح پائین استفاده شود

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

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

به طور خلاصه بهتر است به‌جای عبارت برنامه‌نویسی سیستم از برنامه‌نویسی سطح پائین استفاده کرد. اهمیت طراحی سیستم‌های کامپیوتری به عنوان یک رشته یا زمینه به خاطر نام آن نیست؛ بنابراین جداسازی این دو مفهوم، طراحی زبان برنامه‌نویسی را شفاف می‌کند و دیدگاه‌های مشترکی را نسبت به این دو حوزه به وجود می‌آورد: چگونه می‌توان سیستمی را حول محور ماشین یا برعکس طراحی کرد؟

بیشتر بخوانید:

۸ رویکرد اوبونتو که باعث تغییر و بهبود لینوکس شدند

زبان برنامه‌نویسی جاوا 13؛ ابزاری برای بهره‌وری بیشتر برنامه‌نویسان

پایتون محبوب‌ترین زبان برنامه‌نویسی ۲۰۱۹ لقب گرفت

میت 30 و میت 30 پرو هواوی با سیستم عامل اندروید معرفی می‌شوند

امکان مشاهده دمای پردازنده گرافیکی به ویندوز 10 اضافه خواهد شد

منبع WILLCRICHTON

  • behnam behnam
  • ۰
  • ۰

آیا محبوب‌ترین زبان‌های برنامه‌نویسی، براساس شاخص‌ها و مولفه‌های درستی انتخاب می‌شوند؟ آیا روش‌های سنجش محبوب‌ترین زبان‌های برنامه‌نویسی قابل اعتماد هستند؟

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

 نمودارهای معتبر و مفید TIOBE و اطلاعات ارائه‌‌شده در مورد محبوبیت زبان‌های برنامه‌‌نویسی در این نمودارها، نشان می‌دهد که در طول زمان، و از  زمان‌‌های پیشتر، زبان‌های برنامه‌نویسی جاوا و زبان برنامه‌نویسی C، پادشاهان زبان‌های برنامه‌نویسی و محبوب‌ترین زبان‌ها بوده‌اند.

اما لحظه‌ای صبر کنید و خیلی سریع نتیجه‌گیری نکنید. نمودارها و شاخص‌های ارائه‌شده‌ی PYPL، به‌عنوان رقیب نمودارهای TIOBE، نتایج دیگری را نشان می‌دهد. براساس نمودارهای PYPL، زبان‌های برنامه‌نویسی Python و Java، جزو محبوب‌ترین زبان‌های برنامه‌نویسی و در اصل پادشاهان اصلی زبان‌های برنامه‌نویسی هستند. براساس نمودارهای PYPL، زبان C، که به‌شکل شگفت‌انگیزی با زبان برنامه‌نویسی C ++ توسعه یافته است، از محبوبیت کمتری برخوردار است و در قسمت‌های پایین‌تر فهرست رتبه‌بندی محبوبیت زبان‌های برنامه‌نویسی قرار دارد. شاید برای شما هم این سوال پیش بیاید؛ واقعا کدام نتایج درست هستند و کدام نمودار، اطلاعات درستی را ارائه می‌دهد؟
بهترین زبان برنامه نویسی 2018

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

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

مقاله‌های مرتبط:

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

هنگامی که با دقت بیشتری به اعداد توجه کنید، با مسائل عجیب‌تری نیز مواجه خواهید شد. با توجه به نمودارهای TIOBE، زبان برنامه‌نویسی C، در عرض ۵ ماه، از کمترین امتیاز خود، به جایگاه زبان برنامه‌‌نویسی سال (Programming Language Of The Year)‌ رسید. به‌نظر می‌رسد که زبان C در سیستم‌های نهفته (امبدد)، دوباره ظهور کرده است. اما، علت بروز چنین نتایجی در اندازه‌گیری‌ها، می‌تواند مربوط به روش‌های ناقص و مصنوعی سنجش باشد.

جاوا اسکریپت

بیشترین آمار متناقض، مربوط به زبان‌های برنامه‌نویسی Objective-C و Swift است، که برای نوشتن اپلیکیشن‌های محلی در سیستم عامل iOS به‌کار برده می‌شوند. به‌نظر می‌رسد که در مجموع، اخیرا محبوبیت زبان‌های برنامه‌نویسی برای پلتفرم‌های چندسکویی (cross-platform) مانند Xamarin و React Native کاهش یافته است. اپل در حدود چهار سال، به سمت استفاده از زبان برنامه‌نویسی Swift متمایل بود، و به‌نظر می‌رسد زبان برنامه‌نویسی فوق‌العاده‌ای است. با این حال، زبان Objective-C هنوز بسیار محبوب‌تر است و به‌صورت گسترده‌ای مورد استفاده قرار می‌گیرد. وقتی نگاهی به افرادی می‌اندازیم که با اپلیکیشن‌های IOS/tvOS/watchOS سروکار دارند یا با بسیاری از توسعه‌دهندگان iOS صحبت می‌کنیم؛ متوجه می‌شویم بعید است که برنامه‌نویسی، از زبان Objective-C به زبان Swift تغییر وضعیت نداده باشند.

مقاله‌های مرتبط:

اما همه‌ی این حکایت‌ها و قصه‌ها، نمی‌توانند جای آمار و داده‌ها را بگیرند. اگر می‌بینیم که شاخص‌های سنجش محبوبیت، نتایجی متفاوت با تجارب شخصی برنامه‌نویسان اراده می‌دهند، می‌توانیم این‌طور نتیجه‌گیری کنیم که تعصبات شخصی و سوگیری‌های فردی هم می‌تواند باعث ارائه‌ی نتایج نادرست شود. البته یک مقیاس اندازه‌گیری دیگری نیز برای سنجش محبوبیت زبان‌های برنامه‌نویسی وجود دارد. اگر به گزارش سالانه‌ی GitHub در مورد ۱۵ زبان برنامه‌نویسی محبوب در پلتفرم توجه کنید؛ متوجه می‌شوید که نتایج این گزارش، به نتایج ارائه‌شده توسط تجربه‌ی فردی برنامه‌نویسان بازار بسیار نزدیک است، و با نتایج ارائه‌شده از نمودارهای TIOBE و PYPL تفاوت‌هایی دارد. 

طبق گزارش GitHub، در سال‌های ۲۰۱۶ و ۲۰۱۷، محبوب‌ترین زبان برنامه‌نویسی در جهان، با فاصله قابل توجهی از بقیه‌ی زبان‌ها، زبان Javascript بوده است. پایتون در مقام دوم، جاوا در مقام سوم و Ruby در مقام چهارم نمودار قرار دارند. این نتایج، در مقایسه با نمودار TIOBE، تفاوت فاحشی را نشان می‌دهد. در نمودار TIOBE، ابتدا زبان‌های برنامه‌نویسی جاوا و C محبوب‌ترین زبان‌ها معرفی شدند؛ و سپس با فاصله‌ی زیاد پایتون و C ++ قرار دارند، جاوا اسکریپت در رتبه‌ی هشتم ایستاده است. همچنین با توجه به نمودارهای PYPL، محبوبیت زبان‌های برنامه‌نویسی به‌ترتیب بدین صورت گزارش شده است: پایتون، جاوا در ابتدای نمودار و با فاصله‌ی زیاد، جاوا اسکریپت و PHP قرار دارند. 

زبان برنامه نویسی

روشن است که آمار و ارقام گیت‌هاب، نمایانگر کل این حوزه نیست؛ اندازه‌ی نمونه بسیار بزرگ است و تنها به پروژه های متن باز می‌پردازد. اما به‌نظر می‌رسد که GitHub، تنها سیستم سنجشی است که زبان Swift را محبوب‌تر از Objective-C می‌داند. همین مساله باعث می‌شود که نتایج آن متقاعدکننده به‌نظر برسد؛ اما باز هم به‌دلیل متن‌ باز بودن آن، نتایج ارائه‌شده‌ی از طریق این سیستم را نمی‌توان قطعی در نظر گرفت.

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

بیشتر بخوانید:

زبان برنامه‌نویسی جاوا 13؛ ابزاری برای بهره‌وری بیشتر برنامه‌نویسان

جاوا با عرضه‌ی Jakarta EE 8 به‌صورت کامل متن‌باز شد

پایتون محبوب‌ترین زبان برنامه‌نویسی ۲۰۱۹ لقب گرفت

گیت هاب دسترسی کاربران ایرانی را مسدود می‌کند [به‌روزرسانی]

اکانت توسعه‌دهنده‌ اوبونتو در گیت هاب هک شد

منبع TECHCRUNCH

  • behnam behnam