DEV Community

Discussion on: Thoughts on interpreted vs compiled languages?

Collapse
 
cjbrooks12 profile image
Casey Brooks

I am a huge Java and Kotlin (compiled languages) fanboy, and really don't care much for Groovy, Javascript, Ruby, or Python (all interpreted languages). One of the main reasons why I like compiled languages is because it gives me a sense of safety in refactoring that you don't get with interpreted languages.

For example, if I change a variable name and forget to update the code that used that variable, a compiled language will fail to compile, and I am forced to fix it everywhere. In an interpreted language, even one that is preprocessed using something like Webpack, you can't know for sure that you've renamed the variable everywhere until you start getting errors at runtime. You can mitigate it with static analyzers, but that's just an extra thing you have to get set up, which comes for free with compiled languages.

Collapse
 
mikeveerman profile image
Mike Veerman

I agree, but on the other hand: fixing something in the backend and not having to recompile and restart the server is awesome once you get used to it.

Trade-offs, trade-offs...

Collapse
 
rrampage profile image
Raunak Ramakrishnan

Getting into this a bit late but most statically typed languages support incremental compilation so you only have to compile the part which changed. Also, Java server-based applications I have worked on support hot-code reloading in development mode. The feedback loop is not as bad as people think.

Collapse
 
jj profile image
Juan Julián Merelo Guervós

That's the case for JavaScript, but most interpreted languages I know will throw a compile-time error (call it parse-time if you want) if they find an unknown variable. Perl 6 does that by default, and Perl does it if you do

use strict;
use warnings;

at the beginning, which you should do anyways.