Why I Chose to Learn Python


#1

I am eager to learn Python for five years now, while I was aware of it right from the beginning. A decade or nearly two haven’t been enough to force me, although i am the ‘FEED ME I NEED KNOWLEDGE’-type of guy.

I victoriously avoided Python (as also Haskell and Lua - which are next on my hitlist) all the time, but i DO NEED TO LEARN IT, because I indeed HAVE A LOT OF REASONS for that, SOME OF THESE ARE:

  • to be able to automate things in lnx/bsd, in a bit more comfy way then shell-scripting

  • to make use of the sheer power of direct access to software-/hardware- -core-parts of a given OS via an interpreted-, not an assembled- -act-of-creative-coding

  • to get the gist of what all these extraordinarily snippets/apps/suites programmed in Python do in detail; especially because they are mostly exclusively coded in Python and if you research the reason why, you won’t find the answer ‘because …’, but mostly ‘because there is no other way that makes it possible to do everything that it does, without using other languages, too’ …

  • I hate to ‘JUST DON’T UNDERSTAND’ ( whereas foremost i do not understand, because i am not willed to learn, because to me it’s U G L Y … EXAMPLE : PYTHON )

So, let me roll my experience so far up:

CodeCademy made it possible, that i dive into it, by delivering a modular set of tasks, the more advanced, the more time you invest; which is a good thing.

Though right at the beginning, i found that the lessons are twisted (which i mentioned to CodeCademy via Bug-Report) in a kind of Columbus’ chicken-or-the-egg; the deeper i went in this “one evening and one day adventure until now”-attempt, the more experienced i became and it was possible to peel of my ‘HATRED AGAINST THAT SNAKE’, or at least ice it to a level that i can be strictly functional …FUNCTIONAL, HEHE, GOT IT? … [Otaku-NEET-Nerd-like-hasty-laughing] …

I still think Python is by far one if not THE MOST UGLIEST LANGUAGE to write and look at it, but at least i now grasp the basics, which were almost inaccesible to me.

Because of the fact, that besides 65XYZ,68K Assembler, LISP and C, the (in contrast) only basic language i used was Commodore Basic on my first machine the C64; After that, i dug into Turbo Pascal, C++, etc.

You can say I learned anything that has

  • braces
  • features to manipulate the code itself at runtime
  • dynamic typing or at least queer ways to be able to get to the same result
    and
  • be able to handle at least the data in an object-based manner, if not at all object-oriented.

If you read about Python and it’s features you may now wonder, why i haven’t got to learning and truly understanding it, as from the description above it seems it would be a perfect fit … (braces aside …)

Well, you know … Ahem … No excuses, sorry …

BUT … all that languages gone up to JavaScript in a more or less straight line, which in the end was (and still is) the most versatile language ( we’ll see how long that remains, the more TYPED it becomes ) in my opinion.

So, yeah after all, anything i learned shares some in common:

I LOVE BRACES, you are allowed to assume.

That Python is forcing me to use it’s way of indentation, is the biggest problem for me, as I get the gist of things or concepts quite easily as long as they are visually unique.

  • I love trees, i hate spreadsheets.
  • I love freedom in naming my variables, classes, methods, etc. to my liking; Using Pythons’s recommended naming scheme is to me like using just nouns besides verbs in imperative. A language must allow me to create a PlusQuamPerfect just by the naming scheme, if not, go to styx or alike.
  • I NEED the freedom to give the code i am working on a distinct shape, a unique visual structure, without changing what it does, by accident.

Give me Python with JavaScripts freedom of using braces and therefore indentation-freewill plus the possibility to write code without EVER need to take care of how, when or why WHITESPACE should be used IN WHATEVER FREAKING MANNER, but instead allow the coder to misuse it for syntactical sugar, or don’t use it at all. Because in the end fellas, it is W H I T E S P A C E aka B L A N K aka N O T T H E R E. Got it?

And in the end all should be still lint-able and syntactically and logically fine, and in result consistent.

Do the above to Python Mr. Magic and i will eat that whole snake. As long as i can edit it, visually attractive, even in a simple editor as notepad or nano, it is wonderful.

So you might be able to see, why I did and still do HATE PYTHON.

BUT NEVERTHELESS, as i told already: CodeCademy has done what no other Tutor/Tutorial was able to achieve by applying Python to my weird head and my strange way to recognize and remember things.

THANKS FOR THAT.

We’ll see, if it is enough to get me going. But right now, i’m grateful enough to say:

JUST TRY IT

With CodeCademy; especially when you already know one or another scripting-|coding-|programming- -language.

You just have to bite your lips steadily and hope you barely survive the first dozen tasks. After that get a drink, take a long nap and the day after:

CONTINUE.


P.s.: I agree, that this in part sounds like adverising; rest assured i am not part of CodeCademy, but i have to give thanks for guidance in surviving my war with Python. For those that question how this comment is in any way recommending Python, but just a speech full of hate against it: It is obvious, that Python is the most versatile in terms of accessible to anyone on nearly any given platform, operating-system and alike. Let alone Linux in all it’s variations delivers python quasi-generic in most distributions. Python is also a fantastic way to write cross-platform apps, in terms of bridging architectural borders like from ia86,amd64, over mips, sparc and ppc to arm in its variety, which is not due to python, but python enables accessing nearly any hardware-opportunity to mess with; Not to mention, the possibility to abridge from linux and bsd or unix in general to windows-nt-operating-systems like in series 5 Win 2k/xp/2k3, in series 6 vista/7/8/8.1/10/2k8r2/2k12/2k12r2/2k16, which resembles any Windows in use and for whose Python is available and working.

Look at my ‘recommendatation’ as what it is: The view of an absolute Python-hater, that must admit it’s sheer possibilities alone make it a necessity to learn; if experienced coder, script-kiddie or century-old-noob. Python has the broadest entrance of all languages. If you catch cold on linux, fire it up with Python. You have Windows? You need doors, too. You think you are the Mac in your block?? Be it, by showing openness and share your apple with the snake! Cook your Raspberry Pi, bite your beagle-bone, eat that Banana! May Pliskin be with you! And so say us all …

Whoever you are and whatever you do or try to achieve, be assured that Python is your most vital option to create something from the ground up to above the cloud. And don’t forget, i hate this language wholeheartedly; so measure my opinion on Python based on that.


Hope it helps!


Why learn Python?
#2

Now, that was a read! Personally, I think the way Python looks with indentation is such a helpful visual. That is the case especially now that I’ve graduated from the web editor and moved onto using NotePad++. Typing out a long document and slowly minimizing completed parts until there’s >10 visible lines left over is just so satisfying. After doing a few Java tutorials today, I must say that I’m glad I learned Python first because Java just feels so unrewarding and annoying because I now have to train myself to use braces and semi-colons EVERYWHERE lol.


#3

Hi, and thanks for your comment!
Especially for letting us know on your insight into the progress you made so far.

Regarding Java: Yeeah, i can feel you, totally; It takes a masochist to dig into it, plus the will to jump into that complex web-network of a heck of a spider-army-party. In short: camouflage and make yourself believe you are part of it and then try to find the way out; again … over and over.

It’s a bit like being The Punisher and recognizing you are the badass he wants to punish. Just my opinion. Rewarding? That word doesn’t exist in the world of Java.

On Python: I think, i do understand why you find the indentation (–rules) helpful. At first glance they are, especially if you do your coding not exclusively digital, but use pen and paper (which helps a lot to understand what you are doing).

As long as we talk about these little parts, which can easily fit on one page and may just have about 3 levels of nesting, i’m totally with you.

My problem with them is mainly that one who wants to edit them has to use an editor that is able to lint while editing and so can correct the indentation immediately.

Just think of the following:

  • You have written a script, which so far only defines some functions (def … 1st level);

  • which contain some simple conditionals (if … 2nd level);

  • in which you (as part of your creative process) just quickly integrate another set of conditionals (if … 3rd level)

  • because you are in The Zone right now, yet you already realized you have to get that part out of there, because it should for now just be a practical example.

    But, no!!! You have another idea and fear to forget it …

  • so you quickly define some subroutines as functions,(def … 4th Level)

  • because you already have a controlled environment, so go for it, yeah; just quickly a conditional (if … 5th level)

  • in that a simple loop (for … 6th level)

  • and just to be sure, that it works right, separate the processing via conditional (if … 7th level)

Yes!!! Totally cool, woohoo! … oops … when you try to pull it out (cut, paste), you remember … darn it, i am in an editor, that can not justify the indentation automagically.

You have to do it all by hand …

Oh how nice would it be, could i just separate that part into a set of braces, to make sure it is parsable, fraggin indentation rules …

And by the way … why there is so much unused space???

I hope you get what i mean; Yeah, Python is a fine way to do anything and do it quickly, but either you learn at the same pace in parallel how to use an enhanced editor/ide to be on the safe side (and have that anytime accessible) or you are forced to do a lot of thinking and testing (before you do the coding itself) about the structure you should follow, which kind of workflow you want to establish.

All that results in a typical problem, called lock-in.

You are automatically locked-in to a static way of working on and against, but not with, your code.

You are the one, that does all in Vim, or the one that does all in Emacs, or the one that uses Notepad++ exclusively, or you decide to use an IDE.

For that last thought, there is a simple solution which will benefit you … if … you really do learn how that moloch works … its name is eclipse. Or in a Windows world: Visual Studio.

Oh, you just started? Well, than you have another option, maybe use Atom, VSCode or … (wait ain’t those to come all Atom-Editors?? hmmm …)

So, sorry for that deeeeeppp dive, but i want to know, if you do understand the complication hidden in it, and therefore can at least have pity for me and my situation. Boohooh, why didn’t i start with Python, boooh … Oh, wait, because it was first available to me through the internet, so in the mid 1990s … a decade after i started coding and doing creative arts digitally … hmmm …

Maybe, you already had also an akward experience of lock-in or 'follow your focus until recognizing you are caught in the rabbit hole experience. Or have been hit by that massive flagpole of time and the saddening wish to travel through time, to start right?!

Please, let me know! And all-in-all just let me say: Go for it and dig deeper into Python!

In terms of rewards, you made the right choice and all-in-all Python is the best starting point, as it inherited many concepts of the major languages and enables you to use merely anything in the whole wide world.

Good choice!

P.s.: May i ask what lead you into coding and what you are doing with the possibilities it opened for you?


#4

So far, my farthest reaching nest has gone 6 tabs in, but if I hadn’t defined functions elsewhere throughout my code, I’m sure it would be a bit longer. Regarding the problem of copy/paste, I haven’t had a problem sharing my code yet; maybe, it’s because I’m using tabs rather than two spaces. Another possibility is that it can neatly insert itself if I paste it into a pre-formatted text block. As for getting wrapped up in creating tons of conditionals and huge nests everywhere, I just try to simplify either by planning ahead with comments of what I want to go there or by copying and pasting huge chunks of code, defining a new function, and running it with the correct parameters. I have come across a few substantial problems while coding so far, but they were easily solved because my code right now is pretty primitive lol. My longest file is only 84 lines right now.

What lead me into coding? It’s really just a culmination of things or a series of little events. I’ve always been interested in arts but I found math and science pretty boring-- people always said ‘Oh, just wait until you’re in algebra or calculus and it’ll become so interesting!’, but I’m taking calculus right now, and I’m super bored! :stuck_out_tongue: Also, in the past I’ve briefly tried to learn Lua and it was fun and all but I just couldn’t stick with it through self learning just from the documentation alone. Many of the things I learned from Lua have helped me now that I’m learning again, such as if/else (I never did elif or else if in Lua though). IIRC, each line also had to be closed but the word to close an indentation was ‘end’. Anyway, that was years ago; fast-forward to the past few months. I had an itch to start coding again so I picked up this game I used to play named Project Spark, but as it turns out: the game was taken offline, and I ended up spending more time creating characters and thinking of game-play mechanics than actually implementing them. The only accomplishment that I’m proud of from that was making a Day/Night cycle (but it was completely unnecessary for the actual game-play :tired_face:). About a week ago (the day I signed up for this site), I listened to a CS student talk about how he self-taught himself how to program before getting a formal education in it. He said that he worked as an intern for designing website (don’t know if it was front or back end) and he developed games (he didn’t specify a language). Well, I thought that I could give coding another go and see if I like it, and here I am.

What possibilities? I’m not quite sure yet, but that’s both worrisome and exciting. Since my free trial ran out here, I’ve been investigating other programs such as SoloLearn among others. Many sources I’ve read say that sites like Codecademy and SoloLearn are too ‘on-rails’ to become proficient from just by virtue of the program alone.


#5

I see, you stood at the door to the house of horrors ( …6 tabs in) and got away with it, lucky you!

Seriously, how you described it, that’s exactly what i meant. But what i couldn’t estimate from your post is: Do you think you already had that ‘in the zone’-feeling?

I don’t wanna pest you with details, but In the beginning ('88 i think: Commodore straight through +4 | C64 | C128 | Amiga and others from that era) it felt like a stairway to heaven (i dug into making arcade-games, side-scroller, adventures and stuff, just for the fun of it - ended in building sequencers, tracker, first steps into robotics, sampling-synthesizer, etc.). Later on, sure my life changed drastically and when i got into computing again, that world had changed, to what finally became the PC of today. I had a hard time understanding how this concept of a machine ever could take over the then so-called home-computer world, clunky, edgy, slooow, looud and these ugly graphics. For one used to hacking some code in and being able to create animations, interaction, music - it was fairly underwhelming to get back on track and find pace.

Nowadays (since Android i would say was the pinpoint) it feels like in the 80s. A creativity boost, tons of people building tons of things, which let others build far more out of it. All evolved into an eco-system which sustains itself, because it has something to offer - asides monetization - the pure fun of solving and building puzzles of any imaginable kind.

And Python for sure is a fundamental piece of the pie.

I know, it all sounds very romantic and yes i am. But i always wondered how people who did not had the chance to experience all the origins of these things (Arcade | HomeComputer | BTX/MiniTel | mbox/Fido | UseNet | Internet | PDA | Communicator | Convertible-Tablet-PCs | Smartphones | Tablets | VR) … How it felt|feels for them?

Especially in regards of what you wonderfully pictured here:

That’s exactly how it should be. You want. You try. You find something other interesting … Oh darn, but you wanted to … Yes. Exactly. But time comes and you will see, that you really learned, because you not just repeated something already existing, but tried to be creative around and therefore about it. Truly that’s nice, because it shows you don’t just do that thing to reach for achievements as means to pull a job off or higher your income. You are hot for the possibility puzzle:

So you had that high, that into-the-zone, i assume. But you might just recognized it by the down coming after. It’s a kind of sensing helplessness, due to the fact you actually recognized how massive that universe of sheer possibilities is. At least that’s my view to it. But hey: Day/Night-Cycle? … unnecessary?? Asides giving a game that special feel??? - How many decades did it take until the whole world realizes, that virtual natural lighting can help to ease the pain of endlessly working|gaming through the whole night??? - It turns red. What does it? Nothing, it turns red. Chrrrzzzz … And at that point let me slightly slide a warning in:

It’s typical, though it’s also a stereotype, but reality doesn’t differ between, and that’s fine. But on that warning i mentioned, let me twist it to a question:

What is front-end and what is back-end? And why does it matter? Does it matter?

It does not, at least not for you, the one who is creative and does the hard labour. It’s just another BadScience-Bingo, if you know what i mean. These are (un-)necessary categorizations made to give people distinctive terms to be able to split, who gets what for what was done and who has to pay for it. It’s the evil one have to deal with to get|share the bucks according to the tasks.

The moment you get paid for it, it’s good to know what fits in what lot. But trying to draw borders before that happens, is no help at all to the decision of what you want to learn next. There are no borders. That’s why it’s all so freaking fantastic and so mind boggling.

I like it! Straight to the point and just frank.

I would like to know if you know (exactly) how much time you spent to read these sources, until coming to the conclusion that it might be too ‘on-rails’, in contrast to the time you spent actually grinding these rails? No offense, trust me; Just a reminder of how much information is accessible nowadays in seconds (for lifetimes and generations to come to study all of it) versus sharp-minded focusing on the ‘mission’.

It’s nice to have sites like CodeCademy, which equally provide an open knowledge and skills generating, testing and discussing platform, as also the opportunity to get into the game by having people who actually teach and test you remotely for (in comparison to courses, available locally, if at all) a minimum amount of coins.

For sure the thing is, there are many out there. Many who do the same. But in the end it depends only on you and your will to do what has to be done, to enable you creating magic. And running ‘on rails’, give away the control, for a safe ride, can be a good and relaxing thing. Rails … (Ruby on … Fragg it, another monster i have to tame).

A last question on that attempt to dig into Java, after rattling the snake: Does it promise you something you think in Python you can not achieve? If so, let us know.

Though i’m a Python-Hater, yet i have the belief, that there is none that can’t be done with Python (a good chunk of that belief is the connection to a language named C). Please let us know, why you considered Java to be next on your route, after Python!


If you stumbled over this communication, which was moved into this new topic ‘Why i Chose To Learn Python’, because i polluted the other topic (srrryyy and thanks for splitting it up @mtf ; it makes a bit more sense now, indeed) … rgh, where was i …?

Okay, one more time: If you stumbled over this, please feel free and tell us what has hit you too hard to withstand learning Python.

Is it too, the fact that Python promises easy entrance for noobs? Or is it that you are aware that it opens up endless possibilities and you are willed to relearn from ground zero?? Or do you have a super special crazy reason that lead you into the labyrinth and now you need to find your way out by mastering the snake???


Please, let us know. Participate. That’s what it’s for, right?


#6

I’ve heard that each language has its own uses that are better suited for different situations. Python is apparently an interpreted language-- which I guess means that it is fed to the computer as the code is executed or something. I heard that Java is a type of compiled language-- which I guess means that it is made suitable for the computer ahead of time or something.

I think that Codecademy was a good starting place for me, but it just doesn’t go into the sheer depth that a book would go into. Right now, however, I’m fine with using the documentation even though (and I quote from docs.python.org):

This tutorial does not attempt to be comprehensive and cover every single feature, or even every commonly used feature. Instead, it introduces many of Python’s most noteworthy features, and will give you a good idea of the language’s flavor and style. After reading it, you will be able to read and write Python modules and programs, and you will be ready to learn more about the various Python library modules described in The Python Standard Library.

Despite all this, the best learning tool for me has been coding by myself and reading others’ codes.

More than the indentation, Python is just so easy to understand for the most part. Everything appears to have a purpose and everything is logical. I don’t doubt for a second that Java is equally if not more logical than Python, but to me, it’s the difference between quickly glancing over some text/e-mail or carefully, methodically looking over some ancient piece of literature. Both are great in their own right and for different reasons, but the former takes much less time in order to understand the meaning. Given enough time, I might be able to become better accustomed to Java, but I don’t think it will be through Codecademy. I’ve only done 50% of the Java lessons, but it feels like I’m learning nothing new (the only thing new that I hadn’t learned in Python was the switch statement with many different cases). I’m 50% in and it still hasn’t explained why every single code has a ‘public class’ at the top, what ‘void’ means, and why System.out.println() is different from just print. Also, the Java lessons have a very distinct shift in style of teaching. Now, more and more of the lessons show some code and they say ‘Hey! After you run this code, you’ll soon be able to do/understand what we just showed you!’. If I had started with Java, I probably would have quit by now, so I’m really thankful that the Python lessons were of higher quality lol.


#7

Great read here Claudius! Thanks for taking the time and effort to type up and share your thoughts. :slight_smile: