Kategori
IoT

Pemrograman IoT

Pemrograman untuk IoT terdiri dari beberapa bahasa pemrograman yang mendukungnya karena Internet-of-Things (IoT) adalah sistem perangkat komputasi yang saling terkait yang dilengkapi dengan pengidentifikasi unik dan kemampuan untuk mentransfer data melalui jaringan. Pilihan bahasa pemrograman tergantung pada kemampuan dan tujuan perangkat. IoT mencakup berbagai perangkat termasuk perangkat edge, gateway, dan cloud computing.

Bahasa Pemrograman Populer

Bahasa paling populer di IoT adalah Java, C, C++, Python, Javascript, Node.js, Assembler, PHP, C#, Lua, R, Go, Ruby, Swift, dan Rust. Ini dari survei online tahun 2017 yang disponsori bersama oleh Eclipse IoT Working Group, IEEE IoT, AGILE IoT dan IoT Council di mana 713 orang berpartisipasi.

Bahasa lain termasuk Parasail, Microsoft P, Eclipse Mita, Kotlin, Dart, MicroPython, dan B#.

Bahasa Pemrograman Perangkat Edge, Gateway, dan Cloud Computing

  • Edge Devices – Merupakan constrained-resource embedded systems. Biasanya perangkat yang digunakan adalah perangkat yang sangat kecil, bahasa pemrograman yang digunakan adalah Assembly dan C. Prosesor yang lebih baik dan daya komputasi yang lebih besar pada perangkat memungkinkan seseorang untuk menggunakan C, Python, Node.js, Java. Fokusnya adalah meminimalkan jumlah instruksi, dan memaksimalkan kecepatan eksekusi dan manajemen sumber daya.
  • Gateway – Gateway mengelola komunikasi dan melakukan analisis data dari banyak perangkat melalui beberapa gateway yang berbeda. Lebih banyak bahasa dapat dijalankan di perangkat ini karena peningkatan daya komputasinya, termasuk C, C++, Java, Python, dan Node.js.
  • Cloud – Dengan kemampuan komputasi yang hampir tak terbatas yang tersedia, kerangka kerja seperti Apache Hadoop dan HiveQL dapat menghitung dan memproses kumpulan data IoT yang besar. Komputasi dan visualisasi statistik dapat dilakukan dengan menggunakan bahasa seperti R atau Julia.
Popular Language IoT 2017

Pendekatan Pengembangan Aplikasi IoT

  • Node-Centric Programming – Setiap aspek diprogram oleh pengembang seperti komunikasi antar node, pengumpulan dan analisis data sensor, mengeluarkan perintah ke node aktuator. Interaksi antar perangkat dikodekan secara eksplisit.
  • Database Approach – Setiap node dianggap sebagai bagian dari database dan pengembang dapat mengeluarkan kueri ke node sensor. Fokusnya adalah pada pengumpulan, agregasi, dan pengiriman data ke base station.
  • Macro Programming – Abstraksi disediakan untuk menentukan komunikasi tingkat tinggi.
  • Model-driven Developement – Kompleksitas pengembangan aplikasi dikurangi dengan meningkatkan tingkat abstraksi dan dengan mendeskripsikan sistem menggunakan tampilan sistem yang berbeda. Separation of Concerns (SOC) mengurangi kompleksitas pengembangan aplikasi dengan memisahkan platform-independen model (PIM) dan platform-specific model (PSM). Pemisahan secara horizontal memisahkan aspek-aspek yang berbeda dari suatu sistem.

Pemilihan Framework Bahasa Pemrograman IoT

  • Scalability – Kerangka kerja pemrograman yang mendukung beragam pola pemrograman yang mampu melakukan penyeimbangan beban secara dinamis.
  • Concurrency – Komunikasi real-time antara jutaan perangkat dan aplikasi berarti jutaan koneksi bersamaan. Penguncian ulir tidak efisien dalam situasi seperti itu.
  • Coordination – Dukungan bahasa pemrograman untuk secara eksplisit (digerakkan oleh kontrol) atau secara implisit (didorong oleh data) yang mengatur peran elemen komputasi.
  • Heterogeneity – Kerangka pemrograman memberikan panduan tentang bagaimana komputasi dipetakan ke elemen komputasi.
  • Fault tolerance – Aplikasi harus dapat dengan anggun beralih dari status online ke offline saat jaringan mempartisi dan memulihkan koneksinya.
  • Light footprint – Dalam hal overhead runtime dan dalam hal upaya pemrograman, kerangka kerja harus ringan.
  • Support for latency and sensitivity – Dalam aplikasi yang terdistribusi secara geografis, mendorong semua komputasi ke cloud bukanlah hal yang ideal. Kerangka kerja pemrograman harus menangani persyaratan ini secara dinamis.

Paradigma pemrograman IoT

Paradigma pemrograman adalah cara untuk mengklasifikasikan bahasa pemrograman berdasarkan model eksekusinya. Perlu diingat bahwa bahasa tertentu dapat di bawah lebih dari satu paradigma. Paradigma pemrograman berikut ini cocok untuk IoT:

  • Functional – Pemrograman fungsional membantu memecahkan tantangan skalabilitas dan konkurensi. Preferensinya untuk kekekalan, komposisi fungsi, menghindari efek samping, lebih sedikit kode, dll. menghindari beberapa jebakan IoT.
  • Dataflow – Pemrograman dataflow menekankan pergerakan data. Ini memodelkan program sebagai serangkaian koneksi. Input dan output yang ditentukan secara eksplisit menghubungkan operasi. Operasi berjalan segera setelah semua inputnya menjadi valid. Bahasa aliran data secara inheren paralel dan dapat bekerja dengan baik dalam sistem besar yang terdesentralisasi.
  • Event-Driven – Pemrograman berbasis peristiwa (peristiwa yang dipicu oleh sensor, konektivitas, atau waktu) sangat cocok untuk IoT di mana perangkat menghabiskan sebagian besar waktunya dalam mode hemat daya, bangun karena beberapa peristiwa, memproses data, mengirimkannya , dan kembali tidur.

Persyaratan khusus yang harus dipenuhi bahasa untuk digunakan untuk IoT

Pengembang dapat mempertimbangkan hal berikut:

  • Bahasa yang mendukung pemrograman Fungsional, Dataflow, atau Event-driven.
  • Bahasa yang ditafsirkan (Python) lebih lambat daripada yang dikompilasi (C/C++/Rust/Go).
  • Ketik keamanan, manajemen memori, tidak ada pengecualian penunjuk nol. Bahasa seperti C dan C++ menggunakan pointer eksplisit untuk referensi memori. Perhitungan pointer yang salah dapat menyebabkan buffer overruns dan pelanggaran akses memori.
  • Ketersediaan perpustakaan GPIO.
  • Library yang mendukung protokol IoT seperti Advanced Message Queuing Protocol (AMQP), Constrained Application Protocol (CoAP), Extensible Messaging and Presence Protocol (XMPP), OASIS MQTT, atau Very Simple Control Protocol (VSCP).


Varian Bahasa Pemrograman

  • Dengan Python, “mraa” dan “paho-mqtt” berguna untuk IoT. MicroPython dapat digunakan pada perangkat yang terbatas.
  • Java pertama kali muncul pada 1990-an untuk lingkungan tertanam yang ketat sumber daya, yang membutuhkan daya komputasi minimum. Banyak dari Oracle Java ME Embedded API ditargetkan untuk kebutuhan sistem tertanam.
  • Eclipse Mita adalah bahasa pemrograman baru yang dirancang untuk terasa seperti bahasa pemrograman modern seperti TypeScript, Kotlin, dan Go. Ini membantu skala dari prototipe ke penyebaran IoT komersial dengan transpiling ke kode C.

IDE dan Tools Pemrograman IoT

IDE dan alat untuk IoT banyak dan kami mencantumkan beberapa di antaranya di bawah ini:

  • Eclipse IOT project (Kura) – Ini adalah kerangka kerja pengembangan berbasis Java untuk aplikasi IoT.
  • Arduino IDE – IDE ini mencakup dukungan untuk bahasa pemrograman C dan C++ untuk mikrokontroler yang dapat diprogram. Ini adalah paket lengkap dengan banyak contoh dan pustaka yang dimuat sebelumnya.
  • Raspbian – IDE ini hadir dengan banyak paket dan contoh yang dibuat khusus untuk papan Raspberry Pi.
  • OpenSCADA – Proyek ini merupakan bagian dari Eclipse IOT Industry Working Group bersama dengan Eclipse SCADA (Supervisory Control and Data Acquisition). Ini menyediakan beberapa perpustakaan, aplikasi antarmuka, dan alat konfigurasi.
  • PlatformIO – Ini adalah IDE lintas platform yang mendukung lebih dari 400 papan tertanam, dan beberapa platform dan kerangka kerja pengembangan.
  • Macchina.io – Ini adalah toolkit untuk membangun aplikasi tertanam untuk IoT menggunakan perpustakaan POCO C++ dan mesin JavaScript V8. Inti diimplementasikan dalam C++. JavaScript digunakan untuk pengembangan aplikasi. Ini memungkinkan aplikasi modular yang dapat diperluas secara dinamis menggunakan model plug-in dan layanan yang mirip dengan OSGi di Java.

Milestones

November 2005
International Telecommunications Union menerbitkan yang ke-7 dalam rangkaian laporannya di Internet, berjudul “The Internet of Things.”

Oktober 2013
IBM merilis versi 0.2.0 dari Node Red, alat pengkabelan visual untuk IoT. Pada tahun 2016, IBM memberikan kontribusi Node-RED sebagai proyek JS Foundation open source.

November 2013
Damien George meluncurkan MicroPython, implementasi perangkat lunak dari bahasa pemrograman Python 3, ditulis dalam C, yang dioptimalkan untuk berjalan di mikrokontroler.

Oktober 2015
Lars Bak dan Kasper Lund dari Google mengumumkan proyek Fletch untuk bahasa pemrograman Dart guna mengoptimalkannya untuk perangkat Internet of Things (IoT).

2016
Microsoft open source P, bahasa yang dirancang untuk pemrograman berbasis peristiwa asinkron, yang dianggap penting untuk cloud, kecerdasan buatan, dan IoT.

Maret 2017
Team KinomaJS memulai Moddable, alat pembangunan perusahaan baru bagi pengembang untuk membuat produk IoT terbuka menggunakan JavaScript standar pada mikrokontroler berbiaya rendah. KinomaJS adalah kerangka kerja aplikasi JS yang dioptimalkan untuk IoT. KinomaJS sebelumnya didukung oleh Marvell Semiconductor.

Mei 2017
Google membuat Kotlin (JetBrains), bahasa pemrograman yang diketik secara statis untuk JVM, bahasa kelas satu untuk Aplikasi Android dan Platform IoT Android Things-nya.

Maret 2018
Eclipse mengumumkan Mita, bahasa yang bertujuan untuk menghilangkan hambatan masuk ke pengembangan IoT yang tertanam. Mita ditranspilasikan ke kode C. Ini menggabungkan pemrograman imperatif dengan konfigurasi berbasis model.

Maret 2018
Linux Foundation mengumumkan ACRN, proyek hypervisor referensi sumber terbuka yang dirancang untuk pengembangan perangkat IoT.

Baca juga lebih lanjut tentang : Bahasa Pemrograman

Ref : [1][2]