I always found vscode lacking for Python and C compared to pycharm and clion. The latter just work without fiddling with config files.
I always found vscode lacking for Python and C compared to pycharm and clion. The latter just work without fiddling with config files.
In my experience (not saying this is universal), the folks that like JetBrains IDEs came from java/intellij backgrounds, where I hear it really shines.
This all might be a skill issue, as almost all my professional projects have been VSCode based, but since I've only worked at smaller places I definitely can't rule out this was because it was easier to set things up than to fight for Fin to get us all licences.
In your opinion, what makes PyCharm (or CLion if you want to add that in) 'just work'? Do you think it is because you've used it for so long and just know the ins-and-outs? Or is there something you see that they have and VSCode doesn't?
I've always been curious about this as someone who hasn't had a lot of professional exposure to the JetBrains world.
import re
import sys
if re.match(r"[A-Za-z}", sys.stdin):
print("ok")
PyCharm will spot that error immediately, no insaneo configuration requiredPyCharm Professional also gets into the SQL side of things:
with connect(":memory:") as conn:
c = conn.cursor()
c.execute("SELECT * FROM oops WHERE NAME IN ('alpha, 'beta')")
instantly spotted, no configuration requiredI was going to be cute and use json.loads as an example, but it seems somewhere along the way they botched the fact that the first argument to json.loads is a fucking JSON string. But, it does allow showcasing that you can have PyCharm syntax check the "inner" language of any string literal you'd like via their language injection annotations:
import json
# language=json
bogus = """{"this is subtly wrong"; true}"""
json.loads(bogus)
# and the same with tomllib:
import tomllib
# language=toml
bogus = """
[alpha]
beta = []onoz
"""
tomllib.loads(bogus)
# or, if you have some tricky internal stuff
def do_the_thing(
# language=sql
s: str
):
with connect(something) as conn:
c = conn.cursor()
c.execute(s)
do_the_thing("SELECT * FROM oops WHERE NAME IN ('alpha, 'beta')")
# ^^^ also gets syntax checked because it knows the first arg is SQL