Interface and application programming¶
Group assignment¶
For this week group assignment we check and compare different tools. From the list of tools that were presented during class we choose the following to evaluate and created a comparison table for them.
Rust is a performance, safety and productivity oriented programming language. It’s used from systems development or tools to browser apps (via WebAssembly), supports also embedded low-resource devices. It’s a language that can be used anywhere you have C/C++.
P5.JS is a programming language developed on top of javascript to allow to write interactive content. It allows to display on the webrowser animations, visual applications, games, physics simulations, etc. Was written to be the sucessor of Processing.js. It is very flexible and has libraries that can provide connection to devices like p5bots.
Node-RED is a flow/visual programming framework developed in nodejs/javascript. It allows to connect devices through protocols like MQTT, http, json, etc. It allows to create a gateway where IoT devices can be connected or connect, to run functions/tasks as specified in visual flow editor.
MIT App Inventor is a web application programming environment that allows to create apps for iOS and Android via drag&drop GUI and uses Scratch block programming language. It is a good platform for new people to try and learn programming.
Firebase is Google’s platform to help to develop mobile apps without the need to do database or associated server/services management. It allows to create NoSQL database easily and scale them. Currently Firebase platform provides the following services: Cloud Firestore (NoSQL), ML Kit, Cloud Functions, Authentication , Hosting, Cloud Storage.
Three.js is a javascript library that allows to create complex GPU-accelerated 3D animated graphics, using WebGL. It allows to create scenes, reach animations, interfaces, simulations, etc, all inside the web browser
VTK is a software system for 3D computer graphics, image processing, and visualization. It is used worldwide in commercial applications, research or development in areas like health, biomedical, electricity, where his visualization algoritms and modeling techniques can be applied. It is written in C++ and has Phython, Java and Tcl bindings to allow to execute code developed in these languages.
Jupyter Notebook is a web-based platform that allows to create Jupyter Notebook documents. These documents are saved in JSON format and have a structure that allows to insert input code and display the output of the code execution. The platform has the capacity to execute input in a dozen of different languages. Used for example for Math, Machine Learning tasks, to learn or share work. The document can be exported into other output formats like HTML, LaTex, PDF, etc.)
(note: Next generation interface for Project Jupyter: Jupyter Lab)
D3.js is a Javascript library that allows to create beautiful dynamic and interactive infographics for data visualization on the web. It uses standard web technology like html, css and SVG to create these data vizualization.
TensorFlow is a powerfull machine learning platform. It has a flexible ecosystem of tools and libraries that makes development and deployment of machine learning applications more easy.
Comparison Table
Tool | Type | Open source | Comercial | Embedded support | Interface / GUI | Communication | Other Features |
---|---|---|---|---|---|---|---|
Rust | Programming language | ✔ | ✔ | Standard TCP/UDP/IP/socket address, more via libraries | |||
p5.js | programming language | ✔ | ✔ | ✔ | through libraries | Good documentation | |
Node-RED | visual programming | ✔ | ✔ | via node.js/javascript libraries, MQTT, JSON, IoT, etc. | Raspberry Pi, BeagleBone as gateway for Iot devices | ||
MIT App Inventor | web visual/block programming | ✔ | ✔ | serial, web, web services, Lego Mindstorm | For android, visual programming with Scratch block language | ||
Firebase | NoSQL database as a service | ✔ | ✔ | REST API | Mobile app oriented Real-time database services: authentication, storage, analytics, monitoring, etc. | ||
Three.js | 3D javascript library | ✔ | ✔ | via APIs | GPU-acceleration via WebGL | ||
D3.js | JS Data visualization library | ✔ | Data visualization with html, css and SVG. | ||||
VTK | 3D Image processing and Visualization | ✔ | ✔ | ✔ | can also be | ||
Jupyter Notebook | Interactive platform | ✔ | ✔ | Supports several languages by having one Kupyter kernel to execute each language. | |||
TensorFlow | Machine learning platform | ✔ | API | Runs on Android, iOS, Linux, macOS Windows and Web browser |