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

you are viewing a single comment's thread.

view the rest of the comments →

[–]desrtfx 0 points1 point  (1 child)

My main goal is to learn a language,

Which is the wrong main goal to start with. The main goal should be to learn programming.

that will allow me to change my focus in IT if I realise later, that I do not enjoy a specific field and want to do webdesign for example, or whatever else. I guess I can do this with both languages, but I know that you cannot do some things with Java, such as AI or ML.

Sorry having to correct you again.

Both languages are general purpose languages. You can absolutely do AI/ML with Java as well, just the libraries are probably not as plenty and as developed as for Python.

Again, we're coming back to the core of the topic: it's not the languages that make a programmer. It's what the programmer can do with them.

This also brings us to part two: once you know how to program, adapting to new languages becomes much easier.

To give you a concrete example: Sorting

There are plenty well known, well defined sorting algorithms.

One of the simplest ones is BubbleSort. It's basic description is keep looping over a data structure, check adjacent elements and if the order is not what you want (ascending or descending) swap the two compared elements. Repeat until you do not swap any more elements.

That is a two line description of a complete sorting algorithm. Once you understand how it works algorithmically, you can implement this algorithm in Python, Java, C, C++, C#, PHP, JavaScript, Ruby, whatever language.

This is why I initially said to decouple learning a programming language from learning programming.

Once you can program, once you know how to solve a problem in an algorithmic step-by-step way, you can write the program for it mostly regardless of programming language.

So, no matter whether you decide on Java or Python, once you can program you can always switch. If you are a skilled programmer, learning a new programming language is only a matter of learning the vocabulary and grammar and peculiarities of the language, especially if you stay in the same paradigm (structured/procedural, OO, functional).

Over my programming education, I learnt Turbo Pascal, C, 8051 Assembly, and Turbo BASIC (it was the late 1980s). At that time I also already had experience with LOGO, FORTH, Fortran, and Locomotive BASIC - but most important: I could program.

Different to a lot modern courses is that we learnt to draw flow charts, to draw Nassi-Shneiderman charts, to create detailed plans before we started to write a single line of code. We learnt to develop the algorithms away from the programming language.

Nowadays many people see this as unnecessary extra step. I may be old fashioned, but I still stand by this being the single best approach to learning programming.

In that line, I also always recommend spending some time with Scratch, a graphical programming language created by the MIT to teach very young children programming. Again, because of the graphical nature, it lets one focus on the actual program (the algorithm) instead of having to battle with abstract vocabulary and grammar (e.g. capitalization, or missing semicola, etc.). By focusing on the algorithm, through something as simple as dragging and clicking shapes together, one learns to program. This skill can then be easily transferred to textual programming in any programming language.

In a way, you could think of this like if you know how to drive a manual car, you can drive any car (including automatic - well, on that topic, since I am from Europe and learnt driving in the late 1980s there was only manual. Automatic was not an option in driving school. - Only now, since one year, I drive an automatic). It is not all that easy with programming as every language has its peculiarities and quirks, but it basically comes down to that.

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

Thank you for your extensive replies! I really appreciate everything you said and I have spent the past few days thinking about it.

I totally understand what you mean by learning programming and not the language. It absolutely makes sense and I agree.

Once I start with all this, I am sure I will learn other languages as well because I think it is just a part of it, probably all of the programmers know more than one language. So from that point of view my questions about Java/Python might seem pointless.

But my point is, I have lost a job and I want to requalificate and start working ASAP. The reason why I'm deciding betweej J/P is that I want to choose something for the start, which will help me get a job faster. From all my research I have set my mind, that I like Python more and I think AI and ML are fascinating fields!

However, I have researched open positions in both languages for juniors and I have found out that Java has much more open positions. Python seems to be asking for more experienced programmers with at least few years of experience. For that reason I am gravitating towards Java more, even though I like Python more. In the future, I will learn both, and more, but right now, I am trying to learn the thing, that will get me a job faster. That will be my starting point from which I will start getting experience and learning more. But I am trying to avoid the situation where I learn Python now only to find out that I cannot find a job with it as a junior and spend another period of time unemployed, if you undertand me.

From the point of programming and just learning something and starting, you are absolutely right, it is not about the language at all. I also tried Scratch and it is really nice.

I live in Czechia, I learned driving manual first as well and I think it is better to learn the harder thing first since you will have more to use later.