# Flow-Based Programming for Machine Learning
## 8 Discussion
### Advantages and Limitations  
In comparison to the tools widely used in practice, the approach described here offers two benefits. First, our conceptual approach uses API-based code generation techniques which make the code generator (i) generic, i.e., not tightly coupled to the target framework specifics and (ii) scalable, i.e., it can be easily configured to generate target code for a  
\begin{table}
\begin{tabular}{l l l l l l l} \hline \hline
**Tools** & **Graphical** & **Target** & **Code-Snippet Not** & **Code Generation** & **Include Data** & **Ensemble Method** \\  & **Interface** & **Framework** & **Required as Input** & **for ML Program** & **Pre-Processing** & **Supported** \\ \hline Deep Learning & Flow-based GUI & Keras & ✓ & ✗ & ✗ \\  & & & & & & ✓ (auto ML), \\ \hline Microsoft Azure ML & Flow-based GUI & Spark ML & ✓ & ✗ & ✓ & ✗ (for Saprk \\  & & & & & & application) \\ \hline Streamanalytix & Graphical & Spark ML, H2O, & ✓ & ✗ & ✓ & ✓ \\  & & & & & & ✓ \\ \hline StreamSets & Flow-based GUI & Spark ML & ✓ & ✗ & ✓ & ✗ \\  & & & & & & \\ \hline Rapidminer & Graphical & & & & & \\  & & & & & \\ \hline Lemonade & Flow-based GUI & Spark ML & ✓ & ✗ & ✗ \\  & & & & & \\ \hline
**Our Solution** & Flow-based GUI & Spark ML (Java) & ✓ & ✓ & ✓ & ✗ \\ \hline \hline \end{tabular}
\end{table}
Table 3: Comparison of existing solutions with our approach to automate ML application creation.  
different framework with minimal modification. The code generation process of the state-of-the-art tools is either non-existent in literature or not disclosed as in the case of Streamanalytix, RapidMiner or Azure ML. This prevents carrying out performance analysis of generated code from such graphical flow-based programming tools. Additionally, the concept of supporting graphical end-user programming, especially in the area of Big Data analytics and ML, is on the rise. One such upcoming research project is Gaia-X, a decentralized federated and secure data infrastructure where such tools can be supported to perform easy data analytics by data consumers. The absence of scalable conceptual approach for flow-based programing in this domain forces either to stick to the proprietary ones or reinvent the wheel. Second, using the code generator, we generate the target code which can be examined before execution. This has two-fold advantages. Experienced developers too can use such tools to quickly prototype their solution, generate the code and refine the generated code as per their requirements. Additionally, with the generated code available, we can subject it to performance analysis and manual code inspection to detect smells or presence of anti-patterns. Third, our approach does the data pre-processing for the end-user and does not require inputting any code snippets during flow creation. This makes the process easy for inexperienced ML users to develop their ML applications. Our approach has limitations too. We do not support ensemble learning in our approach, which is supported by most other tools. We believe this can be easily integrated into our approach. We have not carried out performance evaluation of generated code with other tools because most of the tools do not generate target code. Additionally, in cloud based solutions, the execution environment is not configurable to a large extent. In order to carry out performance evaluation, we need target codes generated by different tools for a specific ML use case and also compare it in a uniform execution environment to arrive at reasonable conclusions.