title: Should I study Scala?
body: <p>I am an experienced C++ programmer with average Python skills. The reasons I studied Python in the first place were:</p>
  
  <ul>
  <li>to get a different perspective on programming (static vs dynamic, interpreted vs compiled, etc.)</li>
  <li>to increase the breadth of projects that I can work on (Python allows me to do web development, develop for Symbian phones or knock up quick system administration scripts)</li>
  <li>to complement my C++ skills.</li>
  </ul>
  
  <p>I think that Python is great and I believe that I have achieved the above goals. I will continue to use it for small projects, scripts and web development.</p>
  
  <p>I doubt that I can use it for medium to large projects though. While the dynamic typing is convenient, it allows a certain class of bugs that I find disturbing. Unit testing and linting can alleviate this problem, but static typing completely eliminates it.</p>
  
  <p>After looking at some programming languages, I think that Scala looks like a good candidate:
  I like the type inference and it runs on the JVM so it should be available wherever the JVM is available. I can also learn more about functional programming when using it.</p>
  
  <p>But... I also have some doubts, and this is where I hope that the Stack Overflow community can help:</p>
  
  <ul>
  <li>Portability: Linux and Windows at least I hope. What about mobile phones, is it possible to get it to run there?</li>
  <li>C++ compatibility: can I mix C++ code with Scala? (JNI?)</li>
  <li>Programming paradigm: I don't feel comfortable with switching to functional programming (FP) at this time. Can I use object oriented and procedural with some FP at first and then change the proportions as I learn?</li>
  <li>Tool chain maturity: what's your experience with IDEs and debuggers? I'm using Eclipse right now and it seems OK.</li>
  <li>Learning speed: considering my experience, how fast do you think that I can reach a workable level with Scala?</li>
  <li>Deployment: how exactly do you deploy a Scala program? Is it a jar, is it an executable?</li>
  </ul>
  
  <p>Finally, what do you think that are some of Scalas disadvantages?</p>