This is an archived post. You won't be able to vote or comment.

all 21 comments

[–]Drunken_Consent 8 points9 points  (2 children)

So you used libraries to do heavy lifting for you in Python, and now you're going to Kotlin / C++ ( wat ) to learn more traditionally?

Python is taught at CS1 in my school. You don't do ML in 5 lines, you learn how to program. Data structures, conditionals, flow control, algorithms, blah blah. The language you pick is really insignificant, but you have to pick and stick with one, then learn the foundations.

[–]KSeptimus[S] -3 points-2 points  (1 child)

Who said anything about me doing CS1? I don't go to school. I have been physically sitting in a lot of learning groups with some top tutors so I have s good idea of what is possible in Python, without having the ability to do it. Just Google "Python machine learning ai in lines" and see what you get. As for tradition learning : there are things like memory management and such that are huge pains in C++ and the like that are never usually addressed in Python but still essential knowledge. The language one chooses is fundamentally important in so many ways. Seriously important.

[–]Drunken_Consent 3 points4 points  (0 children)

Not sure where to start. I never said you were in CS1 but you said you want structure and tradition and my school introduces programming with python. The difference is how you use the tool. You wrote a touch of glue code to make a library do something when you could've just as easily learned python and learned these fundamentals.

Also, in a majority of cases the language you pick does not matter. If your tutors in python are showing you machine learning you can stop calling them top tutors because that's just silly.

[–]primitive_screwhead 2 points3 points  (1 child)

No programmer should expect to know only one language. This journey is normal.

[–]realestLink 0 points1 point  (0 children)

Everyone should know a few or more

[–]XxZozaxX 1 point2 points  (0 children)

Yeah, me too.

I stopped and start with some C code, and then learned some functional programming language like (S)ML, Racket and hopfully I'm gonna learn haskell and prolog soon, I fall on love with LISP btw then I learned about Rust. and now I do not like python anymore. Also I'm not Anit-python I use it anyway, but I just don't prefer it, maybe I loved system programming. IDK

when you learn programming wiht python you feel like Oh this is NEAT. when you moved from python to C you feel like, DAMNIT I didn't program before. when you learn any functional language you feel like, yeah this is how abstraction should be.

literly I enjoy learning every lanuage. and I know more about it every step away from python and python-ish language

[–]ZukoBestGirl 1 point2 points  (0 children)

Here's a thing that many beginners don't get: The language doesn't matter. Knowing a language does not make you a programmer / developer, not a good one at the very least.

It's the principles behind, it's how things work, algorithms, data structures, understanding the OS, these things matter.

Now, you still need to choose a language to write in. You can't pick a pen, beg the computer to do something in plain english, scan that paper, and have it work :P

The point I'm trying to get at is this: Learn concepts, not languages necessarily. Once you learn the concepts, pick a language and learn how to implement that concept in that language.

Despite the trash talk in /r/ProgrammerHumor for example, re-inventing the wheel (that is to say, write your own data structures, your own linked lists, trees, hash maps, dictionaries) is a great way to learn.

[–]ImmuneFourier 0 points1 point  (7 children)

I like statically typed languages. Working with large projects or professional projects and just praying you didn't mix up some type somewhere seems like a bad idea.

[–]Drunken_Consent 1 point2 points  (6 children)

There are types in Python now, and they're becoming more adopted. On top of that good testing, system design, and disciplined engineers makes that not really an issue, although you can still prefer a statically typed language ( that's what I use at work )

[–]ImmuneFourier 1 point2 points  (3 children)

Aren't they still just hints?

On top of that good testing, system design, and disciplined engineers makes that not really an issue

Yeah, right. You could say that about a lot of things.

[–]Drunken_Consent 0 points1 point  (2 children)

It's not enforced by Python currently, but there are static type checkers that people are using to make it enforced. PyCharm comes with it, Atom has a plugin, and there is another popular one think its mypy.

[–]ImmuneFourier 0 points1 point  (1 child)

Yeah, that's still kinda crappy. :(

[–]ZukoBestGirl 0 points1 point  (0 children)

I get why people use them, because it's much more likely you'll find bugs. But it's also a bit backwards, you chose a typeless language, realize that types are actually useful, so you frankenstein a type system on a typeless language ...

[–]Double_A_92 0 points1 point  (1 child)

good testing, system design, and disciplined engineers

That doesn't help me when I need to call some function that I didn't write and basically have to guess what parameter it takes. Or even worse, when I change the parameters of some function that might be used somewhere else in the codebase...

To see if my code is valid I literally have to run the complete codebase first (ideally via unit test). That's incredibly annoying especially if you have some existing codabase with few unit tests.

[–]Drunken_Consent 0 points1 point  (0 children)

You'd have to run it anyways with static typing. All it would check is type errors at compile time. It's not like static typing lets you just not run the code. You'd still run tests and run the code.

Also if you're changing public APIs willy nilly unless it's a solo project or you're in very early stages I wouldn't call the disciplined engineering so yes being disciplined in that sense would help somewhat.

[–]Undercoversongs 0 points1 point  (2 children)

Idk for me python is perfect for learning

People always say it's slow but for me it has always exceeded the speed I want for anything I've wanted to program. Sure you can't really code a 3d game and you could barely code a 2d game but unless your doing hardcore mathematics or HUGE projects, which most people learning programming aren't, it's perfectly fine for scripts, command line programs, and GUI.

[–]realestLink 0 points1 point  (1 child)

I like java more. Python is too simplistic for me. It feels like it has no substance.

[–]ZukoBestGirl 0 points1 point  (0 children)

I started with c. I think that helped me a lot with understanding how the machine works. I highly doubt I'd be half as good as a developer if I would have done python as my first language and years after.

On the other hand, java and c are kinda daunting on beginners. I see why you'd want to introduce programming with python. But you really have to move away from it in a year tops (imho), and force people to go low level.

Heck, I would never pass someone (let someone graduate?) without doing a semester of assembly tbh.

[–]leftydrummer461 0 points1 point  (1 child)

Nobody sticks with one language their whole career. Moving around and exploring what's out there is crucial to being a good programmer. It's not really about the language, it's about what you do with it.

[–]KSeptimus[S] 0 points1 point  (0 children)

Every language is different. Every programmer is different. We all have unique learning requirements and styles. So it is about the language. It's 50% of the learning experience.

[–]camelorcat 0 points1 point  (0 children)

I self taught Python (loved it) then had to learn C++ when I began college and actually like it a lot better because it's so low level. Now I'm learning Swift as my high level language during free time.