Lego Mindstorms EV3: programming language recommendation I am planning to build an autonomous car in LEGO Mindstorms that will use ultrasonic or infrared sensors and in the future also a camera for line tracking. Currently I construct my programs using the Mindstorms building blocks, however, I am wondering whether I should switch to a different programming language such as C/C++ or Java to have more flexibility especially regarding lane tracking algorithms with the camera. In this regard I have the following questions:


In general, would you recommend switching to a normal programming language (I am quite "fluent" in languages like C/C++, Python and Java) in order to avoid having to use blocks when building more complex programs?
If so, which programming language would you recommend? I feel like there is a big community for leJOS and Java which is definitely a plus, although I could imagine that considering the fact that I would like to integrate a camera a language like C/C++ that works well with MATLAB or OpenCV for line tracking algorithms might also not be bad - what do you think would be the best idea for my use case?
Is it possible to use a different programming language without flashing my EV3 such that I can switch back to building blocks if I wanted to?


Thank you for your recommendations!
In general, would you recommend switching to a normal programming language (I am quite "fluent" in languages like C/C++, Python and Java) in order to avoid having to use blocks when building more complex programs?
  


Yes, especially if you plan on doing image processing.


  
  If so, which programming language would you recommend? I feel like there is a big community for leJOS and Java which is definitely a plus, although I could imagine that considering the fact that I would like to integrate a camera a language like C/C++ that works well with MATLAB or OpenCV for line tracking algorithms might also not be bad - what do you think would be the best idea for my use case?
  


I'd recommend using ev3dev, as it seems more-powerful and leJOS development appears inactive.

ev3dev has a few languages you can chose from, though your choice may be limited somewhat by which languages support the image processing libraries you want to use.


  
  Is it possible to use a different programming language without flashing my EV3 such that I can switch back to building blocks if I wanted to?
  


With ev3dev, you run the software off a removable micro SD card. No need to replace the internal firmware.