Answers.Body: <blockquote>
    <ol>
    <li>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?</li>
    </ol>
  </blockquote>
  
  <p>Yes, especially if you plan on doing image processing.</p>
  
  <blockquote>
    <ol start="2">
    <li>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?</li>
    </ol>
  </blockquote>
  
  <p>I'd recommend using <a href="http://www.ev3dev.org/" rel="noreferrer">ev3dev</a>, as it seems more-powerful and leJOS development appears inactive.</p>
  
  <p>ev3dev has <a href="http://www.ev3dev.org/docs/programming-languages/" rel="noreferrer">a few languages you can chose from</a>, though your choice may be limited somewhat by which languages support the image processing libraries you want to use.</p>
  
  <blockquote>
    <ol start="3">
    <li>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?</li>
    </ol>
  </blockquote>
  
  <p>With ev3dev, you run the software off a removable micro SD card. No need to replace the internal firmware.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-06-04T07:50:58.183Z
Answers.Text: Absolutely agree to that. I recently started with **ev3dev** and set up cross compiling via docker image. https://bricks.stackexchange.com/questions/17155/how-to-cross-compile-for-ev3dev-using-docker
Answers.UserDisplayName: r0berts
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-10-16T22:29:41.963Z
Answers.LastActivityDate: 2017-10-16T22:29:41.963Z
Answers.UserDisplayName: Alexander O'Mara
Body: <p>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:</p>
  
  <ol>
  <li>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?</li>
  <li>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?</li>
  <li>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?</li>
  </ol>
  
  <p>Thank you for your recommendations!</p>
  
Tags: <ev3><mindstorms><nxt><ev3-g><ev3dev>
Title: Lego Mindstorms EV3: programming language recommendation
UserDisplayName: ec-m
ThreadText: # Lego Mindstorms EV3: programming language recommendation
  
  (Asked by: username_0 on 2017-10-16)
  
  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:
  
  1. 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?
  2. 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?
  3. 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!
  
  **Tags:** ev3, mindstorms, nxt, ev3-g, ev3dev
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2017-10-16. Score: 8
  
  > 1. 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.
  
  > 2. 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](http://www.ev3dev.org/), as it seems more-powerful and leJOS development appears inactive.
  
  ev3dev has [a few languages you can chose from](http://www.ev3dev.org/docs/programming-languages/), though your choice may be limited somewhat by which languages support the image processing libraries you want to use.
  
  > 3. 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.
  
  > **Comments:**
  > **username_2**: Absolutely agree to that. I recently started with **ev3dev** and set up cross compiling via docker image. https://bricks.stackexchange.com/questions/17155/how-to-cross-compile-for-ev3dev-using-docker  
  
  ---
  
  