زبان‌های برنامه نویسی پرکاربرد اینترنت اشیاء

آموزش,تکنولوژی,مطالب برگزیده

انتخاب زبان برنامه‌نویسی برای اینترنت اشیاء می‌تواند تصمیم بسیار مهمی باشد برای همین سعی کردم تا ۹ مورد از بهترین گزینه ها را برای شما به اختصار معرفی کنم:

C

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

c11

++C

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

java

JAVA

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

js

JavaScript

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

python

Python

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

golang

Go

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

در ادامه بخوانید:  اینترنت اشیاء و رایانش بصورت مه (2)

rust

  • Rust

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

erlang

Erlang

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

julia

Julia

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

منبع: گو، راست، ارلنگ، جولیا، اینفورمیشن ویک

مهدی حسینی مقدم

پژوهشگر و مدیر فناوری اطلاعات، یک دانشجوی مادام العمر و صد البته یک دوستدار تکنولوژی

More Posts

Follow Me:
TwitterLinkedIn

27 دیدگاه :

  • با عرض سلام
    به نظر شما از بین این زبان ها بهترین زبان و کارآمد ترین زبان برای استفاده کدام یک از این زبان ها می باشد.
    و اینکه آلان کارآیی بالا تر و بیشتر استفاده میشود.
    البته من با زبان های ++c / پایتون / جاوا اسکریپت / هم آشنا هستم و هم تا سطح مقدماتی بلد هستم.

    تشکر می کنم پاسخ دهید.

    • با سلام و احترام
      زبان های برنامه نویسی ابزارهایی در دست برنامه نویسان هستند و طبیعتا هر ابزاری برای کاری خاص مناسب است. در انتخاب زبان برنامه نویسی علاوه و کارایی و قابلیت، قرار داشتن منابع یادگیری و همچنین توسعه دهنده آشنا به آن زبان نیز اهمیت پیدا می کند. برای کاربر اینترنت اشیاء در سمت دستگاه و یا همان اشیاء، زبانهای سطح پایین نظیر C گزینه ی مناسبی هستند. زبان Rust و ++C نیز جز زبانهای بسیار خوب در این خصوص هستند. در قسمت میان افزار (Middle-ware) زبان ارلنگ و جاوا بنظر بنده زبان خوبی هستند.
      اما یک توصیه: هرگز وارد جنگ انتخاب زبان نشوید. بهترین زبان برنامه نویسی برای شما زبانی است که به آن مسلط تر هستید و با آن احساس راحتی بیشتری می کنید.

  • من طراحی وب کار کردم. البته حرفه ای نیستم ولی متوسط رو به بالا هستم
    و با زبان php کار کردم
    می خواستم بدونم چه طور میتونم از این زبان در این موضوع (iot) استفاده کنم
    با سپاس

    • در قسمت Front-end و همچنین طراحی و پیاده سازی انواع پنل ها در سمت وب بخوبی می توانید از این توانمندی استفاده کنید.

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

  • سلام توضیح دادید که با جاوا اسکریپت هم میشه برای ایوتی کار کرد، میخواستم بدونم با یه تیم متشکل از یه برنامه نویس سمت وب که جاوا اسکریپت هم خوب کار میکنه و یه متخصص الکترونیک میشه شرکت کرد؟؟یعنی برنامه نویس جاوا اسکریپت میتونه پوشش بده بخش برنامه نویسی ایوتی رو؟؟

    • سلام
      بله جاوااسکریپ زبان کاملی است و البته دیگر تنها زبان وب محسوب نمی شود. با استفاده از NodeJS شما می توانید برای سرورها و برخی از بردها نرم افزار بنویسید.

  • ببخشید من متوجه نمیشم ، باید یک نرم افزار همراه با یک دیوایس بسازی ؟ برنامه نویسی خالی نمیشه ؟ (مثلا طراحی وب یا اپلیکیشن یا نرم افزار ویندوز و… )

    • بله، خروجی تیم‌های مسابقه باید در قالب یک MVP (کمینه محصول پذیرفتنی) باشه که تشکیل شده از یک سخت افزار+نرم افزار+مدل کسب و کار.

  • سلام اقای حسینی مقدم .
    مهندسی الکترونیک دارم و اشنا به برنامه نویسی avr و arm ولی می خوام وارد حوزه نرم افزار بشم . به نظر شما چه زبان برنامه نویسی رو انتخاب کنم که بشه هم برای موبایل و ساعت های هوشمند برنامه نوشت و از طرفی در حوزه نرم افزارهای اینترنت اشیا هم کاربرد داشته باشه . در یک سری از گزارش ها خوندم که زبان جاوا و پایتون و سیستم عامل لینوکس پرکاربرد ترین ها هستن در حوزه اینترنت اشیا . امکانش هست راهنمایی بفرمائید و چند مثال از نرم افزارها و اپلیکیشن های iot بزنید ؟؟؟

    • با سلام و احترام،
      زبان C یکی از پرکاربرترین ها در این حوزه است. همانطور که خودتان هم اشاره کردید جاوا و پایتون و سیستم عامل لینوکس هم بسیار در این زمینه پر کاربرد هستند. توابع کتابخانه ای و پروژهای زیادی در این حوزه تعریف شده اند که می توانید به iot.eclipse.org سری بزنید.
      در مورد کاربردهای آی او تی شاید یک پست کامل نیاز باشد اما برای اختصار به برنامه های مدیریت منابع آب و همچنین بررسی وضعیت سلامت بیماران می توان اشاره کرد. اصولا آ او تی ادامه دهنده همان شبکه های سنسوری است. لینک زیر برخی از کاربردهای اینترنت اشیاء را مطرح کرده است.
      http://www.libelium.com/top_50_iot_sensor_applications_ranking/
      با توجه به اینکه شما زبان سی و میکروکنترلر ها رو می شناسید به سرعت می توانید در این زمینه شروع به توسعه ی نرم افزار کنید.

      • با تشکر از شما .
        ۱- پس با این حساب اگه زبان جاوا رو شروع کنم تا هم بتونم برای گوشی های هوشمند و ساعت های هوشمند برنامه بنویسم و هم بتونم برای سیستم عامل لینوکس . بهتر باشه ؟؟؟ تا بتونم هردو علاقه مندی رو دنبال کنم ؟؟
        ۲- در مورد node.js چی ؟؟ چقدر کاربرد عملی داره ؟؟

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

      • سلام بر شما. منظ.ر از اینکه پروژه های زیادی تعریف شدند یعنی بصورت پروتوتایپ و سمپل میشه از آنها استفاده کرد؟ یعنی مثلا سناریوهایی با وجود چند سنسور داشته باشه؟

        • نه تنها سمپل بلکه حتی پلتفرم های متن باز و تجاری نیز با استفاده از این زبانها طراحی و پیاده سازی شدند که سرعت کار شما را دوچندان می کنند.
          پیشنهاد می کنم Kura را مورد بررسی قرار بدهید.
          http://www.eclipse.org/kura/

  • سلام اقا مهندس حسینی عزیز
    من دانشجوی برق کنترل(کارشناسی) هستم و ۱ سال هم توی زمینه ی ساخت و طراحی پرینتر سه بعدی فعالیت کردم و ۱ سال هم در زمینه ی کسب و کار اینترنتی فعالیت کردم و البته برنامه نویسی رو در حد خیلی مقدماتی c++ میدونم…الان با توجه به سایت شما و بقیه…تصمیم گرفتم زبان جاوا شروع کنم هم برای اندروید هم iot …اما به تازگی علاقه زیادی پیدا کردم به دستیار صوتی آمازون (الکسا) … حالا اگه بخوام توی زمینه ی دستیار صوتی فعالیت کنم با توجه به چیزایی که از خودم بالاتر گفتم…باید از کجا شروع کنم؟ ممنون میشم کامل توضیح بدین

    • سلام
      البته من دو مورد دستیار های صوتی اطلاعات ویژه ای ندارم اما با یک بررسی کلی روی سایت آمازون و البته سرویس های مشابه خیلی ساده و با استفاده از وب سرویس های آن شرکت و البته آشنایی با JSON می شود از سرویس آنها استفاده کرد. در مورد اینترنت اشیاء شما آن چیزهایی را که برای شروع باید بدانید را می دانید و از این پس به تنها چیزی که نیاز دارید یک ایده و یا کاربرد است. با توجه به تجربه شما در ساخت دستگاه های سخت افزاری و دانش برنامه نویسی خیلی خوب می توانید با ترکیب این دو سرویس های جذابی ایجاد کنید. خواه در حوزه دستگاه ها و دروازه ها خواه در مورد سمت سرور. البته توصیه من کار بر روی اولی است. برای شروع سری به eclipse بزنید که در مورد IoT پروژه های خوبی ایجاد کرد است.

  • سلام.ببخشین برای کار با اینترنت اشیاء باید تسلط کامل بر روی یک زبان برنامه نویسی داشت؟؟؟؟؟یا میتوان با دانش مختصر نسبت به زبان های برنامه نویسی به سراغ اینترنت اشیا رفت؟؟؟؟؟

    • ضروری نیست که تسلط کامل به زبان های برنامه نویسی یا یک زبان داشته باشید. با اشراف نسبی به برنامه نویسی هم میشه کار کرد. بخصوص که اخیرا با اومدن مواردی مثل “نود جی اس” حتی بدون برنامه نویسی هم میشه نمونه های اولیه از محصولات آیوتی رو توسعه داد.

پاسخ دهید