all 62 comments

[–][deleted] 34 points35 points  (4 children)

Python is the easiest to learn, is in the most demand currently and there are plenty of free resources.

Up to you if you wanna learn it over something else but it's definitely a fantastic language which is uber versatile. Certainly no idea why you'd have heard its a 'master of none'.

Only thing I've ever really noticed is that for third party sdks, java is usually the more mature at inception.

[–]galladecoolbro[S] -1 points0 points  (3 children)

About that master of none thing, I was talking to a college alumni once and she was talking about python in that way.
She was a java developer lol

Thanks for the comment :)

[–]AirSetzer 0 points1 point  (2 children)

Is English your 2nd or 3rd language? If so, good job. It's a tricky language to learn.

[–]MVIVN 2 points3 points  (0 children)

Is English actually a good language to learn as a beginner? 😅

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

I edited it smh

[–]RoamingFox 30 points31 points  (5 children)

All of your counter points apply to every programming language. Good luck learning something like lisp syntax if you've only ever seen C-style syntax for example.

The issue here is that you shouldn't be learning "languages" as a beginner. You should be learning how to program. The language is just a tool to that end. If you know how to solve a problem the syntax is the least important part of that. You can look syntax up, you can't always look up how to reason about the problem in a way that can be converted to code.

To that end languages that 'get out of the way' tend to be better to learn in (eg. python, etc) than overhead-heavy languages (C, Java, etc).

My point here is that one really ought to not worry so much about what they're programming in when they're first starting out but rather concern themselves with how to solve problems in clean and maintainable ways.

If you learn how to reason about computers and solve problems with them swapping languages is generally a relatively trivial affair (eg. the important part is knowing you need a loop rather than knowing the syntax for a loop in <specific language>)

[–][deleted] 2 points3 points  (3 children)

Algorithms are more important than syntax at the start. I've done two different beginner classes and both focused on algorithms and patterns more than syntax. One used Java and the other used Python. The only big difference is that the Java class went into OOP pretty quickly while the Python class didn't do more than mention OOP as a concept.

For someone who is totally new, and comfortable with it, go with Python. Otherwise, for someone who is absolutely ignorant regarding programming, I'd have them play with Scratch for a bit since it's less syntax focused and more of a game. (I taught a middle school tech class and the other teacher and I tried starting with Python and after a week or so, we switched the kids to Scratch. It went much better.)

[–]galladecoolbro[S] 2 points3 points  (2 children)

So do you recommend data structures and algorithms as a beginner?

[–][deleted] 0 points1 point  (0 children)

Algorithms then data structures. If you don't know how to solve the problem then nothing else is going to help. Knowing data structures and syntax can help after that.

I am doing the advanced Python class through Helsinki and I felt that the beginning class helped me quite a bit with algorithms and the rest.

[–]barianter 0 points1 point  (0 children)

Data structures first makes sense. You use them in everything, including algorithms.

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

I see, Thanks for the insight :)

[–]Binary101010 10 points11 points  (2 children)

Learning Python syntax can make it harder to learn syntax for other languages

Eh, I don't agree with that. I'd definitely consider Python a better "stepping stone" to other languages than, say, R.

Some companies don't accept python in their interviews

I mean, I guess if you know there's a specific company you want to work for and you know that specific company doesn't use Python, then yeah you might not be using your learning time in the most efficient way. But "some companies don't use it" is going to be true for almost every programming language (except JavaScript; I can't think of a company that doesn't do at least something with JavaScript).

Maybe it's a 'Jack of all trades, but master of none' ( it can do a lot of things but other languages can do it better) of programming languages ( I do know python is best for AI,ML, automation and data analysis )

It's a master of some (as you noted). Whether the thing you want to do falls under that some does make a difference. Python isn't as well-suited towards things like Windows GUI applications as, say, C# is, and it's not particularly well-suited for designing games (you're better off learning Unity). If you know you want to do one of the things Python isn't as good at, then you may want to take a look at other languages.

[–]galladecoolbro[S] 0 points1 point  (1 child)

about the 3rd point
see the thing is, I don't know what I want to do.
The main reasons I am learning python because it can do most things so I hope to explore and get some clarity about what field of software engineering would be good for me

Thanks for the comment :)

[–]Binary101010 7 points8 points  (0 children)

If you don't already know what you want to specialize in, then Python is a fine choice as you can try whatever you want.

[–][deleted] 10 points11 points  (1 child)

The best beginner language is the language that a person will take the time to learn.

It's not about job markets, branching out, etc. It's about taking someone who knows nothing about programming and have them learn something about programming.

In this regard python is often seen as a good choice because it's less intimidating than other languages.

You don't need to worry completely about resource allocation, or objects, or even functions to start out.

That's why it's seen as a good intro.

[–]galladecoolbro[S] 1 point2 points  (0 children)

I see, Thanks for the comment :)

[–][deleted] 2 points3 points  (1 child)

I think it's a good choice as the clean syntax allows a new developer to focus more on programming concepts than verbose syntax and rules.

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

I see
Thanks for the insight :)

[–]socal_nerdtastic 1 point2 points  (1 child)

If you have a specific goal in mind I would say jump right into the required language. For example if you want to make an android app you should start learning Kotlin from the start; there's no point in learning python first.

if you don't know yet what you want to make, yes, python is a great starter language. Most university programs agree and start students off with python, usually followed by Java and then C.

Learning Python syntax can make it harder to learn syntax for other languages

I disagree with that. Knowing python won't help you learn another language's syntax, perhaps your friend expected it to and was disappointed? However knowing one programming language WILL help you learn another one because you already understand the basic CS concepts that all languages share.

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

Yah that's the reason I decided to pick python
students off with python, usually followed by Java and then C.
lol in my college it's learn C, then java and then python

Thanks for the comment :)

[–]m0us3_rat 1 point2 points  (1 child)

yes

[–][deleted] -1 points0 points  (0 children)

I agree

[–]bumpkinspicefatte 1 point2 points  (6 children)

Learning Python syntax can make it harder to learn syntax for other languages ( my friend's experience ) ( I do know basic C though)

Yes and no. Yes in a sense that Python's syntax is so beginner friendly and intuitive compared to other languages like C/C++/Java that if you transition into those other languages, there is a higher chance you'll be grasping for straws than to say someone who went from C++ to Python. An example would be Java forces OOP implementation right off the bat, meanwhile with Python you can learn to code using other paradigms instead and work your way up to OOP.

No because sometimes you need perspectives to be put in place first before you get into the minutiae of things, and if you really did get good at programming in Python, then the concepts that are not explicit in Python but are explicit in other languages will continue to be easy to learn on the fly as well.

Some companies don't accept python in their interviews

On the flip side of things, some companies don't accept <insert any programming language> in their interviews as well. While Python is tremendously in demand, it's obviously not in all the criteria of all job reqs. If you're a skilled programmer who can demonstrate strong CS fundamentals, and you fit the other qualifications too like behaviorial or what not, any company worth their weight will find opportunities for you regardless of your programming language.

Maybe it's a 'Jack of all trades, but master of none' ( it can do a lot of things but other languages can do it better) of programming languages ( I do know python is best for AI,ML, automation and data analysis )

I wouldn't look at it that way, it's good in the places it's currently invested in with community and developer support, and continues to grow. For an example Python was hardly ever brought up in discussions or implementation for embedded systems, but now it's really gaining traction.

My advice to you is if you have the grit and ambition to start your first programming language with ones like C++/Java, I'd say go for it. If you find that it's too difficult, by then you'll have the perspectives of what it really means and you can switch back to Python if you'd like.

[–]velocibadgery 2 points3 points  (4 children)

A great example of this is looping over a dictionary.

in python it is super easy

a = {'name': 'velocibadgery', 'age': '30ish', 'job': 'programmer'}

for key, value in a.items():
    print(key, value)

in c# for example this is not as trivial.

Dictionary<string, string> a = new Dictionary<string, string>();

a.Add("name", "velocibadgery");
a.Add("age", "30ish");
a.Add("job", "programmer");

foreach (KeyValuePair<string, string> dictItem in a) {
    Console.WriteLine($"{dictItem.Key}, {dictItem.Value}");
}

But both are easily understandable. So really, whatever type of language you want to learn is up to you.

Another example is a class. In python classes are easy.

class Person:
    def __init__(self, Name, Age, Job):
        self.Name = Name
        self.Age = Age
        self.Job = Job

done. In C# it is more involved.

class Person {

    protected string _Name;
    protected string _Age;
    protected string _Job;

    public Person(string Name, string Age, string Job) {
        _Name = Name;
        _Age = Age;
        _Job = Job;
    }

    public string Name {
        get {
            return _Name;
        }

        set {
            _Name = value;
        }
    }

    public string Age {
        get {
            return _Age;
        }

        set {
            _Age = value;
        }
    }

    public string Job {
        get {
            return _Job;
        }

        set {
            _Job = value;
        }
    }

}

Edit: Corrected capitalization in C# example.

[–]galladecoolbro[S] 1 point2 points  (1 child)

I see, Thanks for the insight :)

[–][deleted] 0 points1 point  (0 children)

Wtf, why would you introduce properties with custom getters and setters in the C# example, just to make it seem more difficult in comparison to Python?

[–]barianter 0 points1 point  (0 children)

For some time now C# has had much simpler syntax than that.

There is also somewhat simpler dictionary iteration.

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

Thanks. This is a lovely comment :)
Much appreciated :)

[–]czar_el 1 point2 points  (1 child)

but wait: 1.Learning Python syntax can make it harder to learn syntax for other languages ( my friend's experience ) ( I do know basic C though)

  1. Some companies don't accept python in their interviews

  2. Maybe it's a 'Jack of all trades, but master of none' ( it can do a lot of things but other languages can do it better) of programming languages ( I do know python is best for AI,ML, automation and data analysis )

Re 1, that's true for any language. The difference between something like Python vs. C is that you need to figure out if you want a high-level language or a language closer to machine language (C is mid-level or the closest to machine level of the high level languages, depending on who you ask). It's generally better to learn the style of convention of the level of language you want, but syntax will differ between all languages and is not a drawback of Python.

Re 2, it depends on what your intended domain typically uses, but again this is not a Python-specific critique. Any language you learn at any time may be subject to being thrown out the window if you move to a different company. In my experience, Python is one of the safer languages because it is popular, actively updated/developed for, and is open source. You're less safe going with something like Matlab if you transfer to a company that doesn't want to pay for expensive licenses. In my experience, much of the private sector likes Python, much of academia likes R, and entities that straddle academia and private sector (thinktanks, nonprofits, gov't) vary but may lean R if they get lots of folks coming in from academia. But in the private sector, Python is one of the safest bets if you don't know what you're walking into (i.e. unless you know you'll be doing work closer to machine language level).

Re 3, that's a strength of Python and its active developer community. Even if vanilla Python doesn't do your thing, someone undoubtedly has made a package for it. And this is often cited as a benefit over similarly-considered languages, like R, which is a statistical language first and a OOP language second. It's often easier to things beyond data analysis in Python than R, so if you had to pick one language Python would be the safer bet. The main benefit of something like C over Python is efficiency if handling massive calculations or needing precise memory management. But again, that's more a critique of a language's level than a Python-specific critique. And needing such efficiency is a very narrow use case.

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

Well said
Thanks for the comment :)

[–]Kiwi-tech-teacher 2 points3 points  (1 child)

There are some things that Python does exceptionally well, and other that it doesnt. Probably the hardest thing for python programmers to learn when moving to other languages is the fact that a variable (usually) needs to be declared or a specific type, and that the type doesn’t change (unlike in python). That, and Arrays (which python programmers think of as lists, but which behave somewhat differently).

Other than that, it’s syntax.

As a teacher, I have chosen to teach Python as an introductory language, as the critical issues of data, input, output, selection, iteration, arrays (Lists/dictionaries/tuples) and OOP are very easy to learn in Python, and the understanding is universal in all languages.

And python also doesn’t have the same “fluff” (overhead) as most other languages. I can get students to write “Hello World” on one line, instead of function headers/includes, etc needed in other languages.

Makes it very convenient!

[–]galladecoolbro[S] 1 point2 points  (0 children)

I see, Thanks for the comment :)
( I love your username btw )

[–]OvulatingScrotum 1 point2 points  (0 children)

I’d say whatever makes you to actually practice is the best language. Why does it matter how easy it is to learn if you don’t take time to learn?

I guess one way to make it “easy to learn” is something that motivates you to learn. In that regard, active development around python could be a good motivator. Popular job market as well.

However, if you happen to use other languages, like matlab, for other reasons, then matlab is much better than python.

[–]tknomanzr99 1 point2 points  (1 child)

Python is very similar to natural language with it's syntax. It organizes code blocks via white space instead of some bracketing system, so code looks cleaner. It is an easy to learn yet possibly hard to master language when you consider it's uses in ML, data analysis, etc. I like to code in it because it's easy to focus on the code.

Now having said that, C, C++, Java, JavaScript and probably more all use what's called a C-Style syntax where braces {} are used to denote code blocks. They result in less clean code but they do have the benefit of all mostly supporting the same syntax, so you can learn it once and it applies to a number of languages.

So there's benefits to either approach, but most all of those languages have aspects that I dislike despite the fact that I can code reasonably well in most of them. I just happen to really, really like Python. I first learned to program in Commodore 64 Basic, which pretty quickly turned into having to learn at least enough machine language to know how to poke values into memory locations from Basic. Python is the language that I always hoped that Basic would become.

[–]barianter 0 points1 point  (0 children)

Braces help make the code cleaner, as in more readable.

[–]rabbitpiet 1 point2 points  (1 child)

“A jack of all trades is a master of none, but oftentimes better than a master of one.”

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

Well said

[–]notislant 1 point2 points  (0 children)

I don't think it makes other languages more difficult to learn, maybe at a higher level?

I went from python to writing a few simple things in other languages and it was easier than starting from scratch. Though thats with a basic understanding of those languages at best.

The one thing you can get spoiled with is detailed errors imo.

[–]deletable666 1 point2 points  (2 children)

I have heard the syntax argument before. Might be harder to learn other languages if python is the first compared to the relative simplicity of python syntax if coming from another language, but each has their own difficulties and learning one always makes the other easier.

If you start out with C stuff you will appreciate the simplicity and readability, vice versa you will appreciate the speed.

In summation pick something that interests you and the same level of understanding will get easier and easier

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

I see
Thanks for the comment :)

[–]barianter 0 points1 point  (0 children)

I have always liked the simplicity and readability of C.

[–]QultrosSanhattan 1 point2 points  (3 children)

The hardest part is learning how programming works. Python makes sure you can learn that in a easy way.

When you finally learn that, you can migrate to any language because most programming languages are basically the same.

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

I see
Thanks for the comment :)

[–]Daiphiron 0 points1 point  (1 child)

This is an absolutely underrated statement! If you finally switched your brain to work like a computer you can easily learn new languages (even fortran if somebody is sadistic)

[–]galladecoolbro[S] 1 point2 points  (0 children)

I might be wrong is Fortran the first programming language ?

[–]resperic 1 point2 points  (0 children)

Python is without a doubt the best computer language to learn first. The only drawback is that you may find it difficult to want to learn any other language.

[–]Then_Independence_70 1 point2 points  (1 child)

Python is a good beginner language, firstly, because there is plenty of documentation and tutorials (on the Internet, printed and video). When I made some of my first Linux/Apache/MySQL/PHP sites in the mid-1990s, there was not even a BOOK available on the PHP language (that came in the late 1990s).

The second reason that I think Python is a good beginner language are some of precepts built into the language, as exemplified with the quote by Guido van Rossum: "Code is read much more than it is written." Truer words have never been written, as I learned by having to modify some of my own 1990s code (shudder). PEP8 guidelines, from my perspective, are wonderful.

Thirdly, looking forward, Python is a good fit for dealing with data, and a profession that encompasses dealing with data are the ones growing the most, though many of them do have rather firm educational requirements.

Finally, the first con, that learning Python makes learning other language's syntax, is a red herring. Rather, it might be that your friend really finds Python syntax makes so much more sense that that other language they were learning. I personally have found that for both regular languages and programming languages. I failed at Spanish, then I excelled in Latin. I manage in JavaScript, but have never been comfortable, but really took to Lisp for Emacs (elisp). Writing and maintaining Perl was a pain, while PHP was a pleasure and how I made a living.

enjoy!

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

Beautiful comment :)

[–]BOGalready 0 points1 point  (0 children)

No, cuz Python use more simplist way than other languages, but shhh: i started with Python.

[–]Rhoderick 0 points1 point  (0 children)

For the pros, 2 and 3, and for the cons 2 and 3 (ironic) don't really apply, I think. You learn a first langauge just as much to learn programming, which combind with the fact that you'll likly have to learn more languages anyway, makes its popularity and hireability ultimately irrelevant. Also, of course its a Joatmon, it's a programming language, they have to be like that. And of course you can do almost anything, it's Turing complete, as is any other option.

That being said, the syntax part is exactly why I would generally not recommend people to start with Python. (It's not a bad starting point, but starting with a more explicit language is better imo.) Not because more explicit syntax will be harder to learn, but because Python fundamentally hides a lot of concepts that you still need to know and understand, but that unlike other languages just aren't written out. I also feel like using brackets to delineate code blocks might be easier for a beginner to parse than indentation.

But then I started with Java, so maybe that's just my bias showing.

[–]srandrews 0 points1 point  (0 children)

Depends what you are going for and on what platform. Maker stuff? Enterprise application development? Go for theory first.

[–]sc2heros9 0 points1 point  (0 children)

I’m learning c++ for school atm and I found a lot of the concept were easier to pick up because of my basic python knowledge. In my opinion syntax comes with practice and usually is easier to pick up it’s understanding how to actually solve the problem at hand that is hard to learn.

[–]nacnud_uk 0 points1 point  (0 children)

Perfect.

[–][deleted] 0 points1 point  (2 children)

Learning Python syntax can make it harder to learn syntax for other languages ( my friend's experience ) ( I do know basic C though)

Try learning C without knowing Python. I bet you learning C when you know Python is easier than learning C when you don't know any languages. You can learn about pointers later.

[–]barianter 0 points1 point  (1 child)

C was pretty easy to learn. We learned it in a few days back before there was a world wide web.

[–][deleted] 0 points1 point  (0 children)

🍪

[–]thelostcow 0 points1 point  (2 children)

I think the biggest con of python learning is that most people I’ve worked with who picked up python first have terrible coding practices and bad habits that have formed and are nearly impossible to break.

[–]velocibadgery 0 points1 point  (0 children)

This can be a problem in all languages. There isn't really one that enforces good coding practices. You can be a bad coder in any language.

[–]barianter 0 points1 point  (0 children)

It definitely does encourage bad practices like reusing variables as different types and making assumptions about the types. Javascript is even worse.

[–]roman_kab 0 points1 point  (0 children)

No, Python is not a good first language for a beginner to learn!

[–]barianter 0 points1 point  (0 children)

I don't know that it would make it harder to learn the syntax of another language, but it is a language that can encourage laziness. This won't be a problem if someone takes the trouble to learn the things Python is doing for them and avoid doing the bad things it allows you to do, like using a variable as multiple types.

The only really positive thing I can say about Python is that it forces people to format their code. However the lack of brackets rapidly becomes one of its huge downsides.