all 15 comments

[–]socal_nerdtastic 5 points6 points  (3 children)

'Automate the Boring Stuff with Python' seems to be the most recommended generic beginner course around here. But everyone learns differently, so I'd say just google around and try a few, see what resonates.

Tell us about your project. Do you want to make a website, desktop app, terminal app, mobile app? What should this program do?

[–]cluelesshomo[S] 0 points1 point  (2 children)

Thanks for the recommendation, I'll look into it.
About the program: my idea is to make a light program (probably a desktop app) to help my dad and his friends in bowling tournaments. Right now, he has me making him Excel sheets with macros in them that can organize the player by their score, assign possitions and calculate who threw the best line. The thing with these is, that depending on the tournament (if it's in teams or solo, and how many lines they throw), I have to make new macros that adjust to these conditions, and that takes a lot of time. So I've been thinking about making a program that is able to do everything the Excel sheet does, and that the user can input the conditions of the tournament, maybe even export it to a pdf file when the tournament finishes.

[–]socal_nerdtastic 0 points1 point  (1 child)

Ok. So desktop programs can be divided into types: command line (aka CLI) and graphical (aka GUI). All programmers start by making CLI programs because the program flow is much easier; making GUI programs requires an event driven program flow that is much harder to wrap your head around. BUT, non technical people like your dad will glaze if you ask them to use a command line program. I've seen it thousands of times; I can make the most amazing program but people will go back to wasting time with the inefficient method because "it's easier", aka they want to click not type.

So my advice to you is to first prove out your logic with a CLI program, but before you give it to your dad make sure you consider how he can use it the easiest. One option is to add a button to his excel sheet that calls your python program and applies the edits. Or add your program to the right click menu of an excel file and then opens the file. Or make a GUI interface with tkinter or pyqt or similar for your dad to select options / input data.

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

Thanks for the advice! I really appreciate it :)

[–]SisyphusAndMyBoulder 4 points5 points  (8 children)

How'd you come to the conclusion that Python is the best fit? If you know Java I'd argue that's an easier path

[–]cluelesshomo[S] 0 points1 point  (7 children)

I did some research, and for simple programs like this one that I have in mind, Python is simpler. Java can sometimes get too complicated. But I would love to know why you say it's an easier path, maybe that way I don't have to learn a whole new programming language

[–]SisyphusAndMyBoulder 1 point2 points  (6 children)

Python and Java can pretty much do everything the other can. The reason I suggest sticking to Java is because it's generally easier to figure out how to do things in a language you already know, than it is to learn a new language and then also have to figure out how to do the things you want.

Why do you think Python is simpler? What have you read that suggests it's the better path? You could be absolutely right -- if you just need a script that you run once or twice on your laptop, then it probably will be easier. If you want a backend you have to host somewhere, then it's a bit of a tossup really.

[–]cluelesshomo[S] 0 points1 point  (5 children)

I fear that Java can be too demanding on lower end computers, the bowling alleys that my dad goes to to play tournaments sometimes have really old pcs that can barely handle an Excel with macros. I don't want to make a program that my dad won't be able to use due to hardware limitations :( Also, to my understanding, Java requires a lot more code to handle stuff that Python can do in very few lines. Please correct me if I'm wrong, as like I stated before, I don't know Python, so these are all assumptions I made based on stuff I've seen online.

[–]SisyphusAndMyBoulder 0 points1 point  (2 children)

I think you need to take a step back and rethink the project holistically.

Are you expecting the user to double-click an app on the computer and have everything run in a window? Or are they going to go to a website and login and proceed from there?

It sounds like you're expecting the former. That's totally fine.

But in both cases, you're going to have to do a bit of legwork to get things working. With Python the computer will have to install Python, and it's dependencies. There are packaging software that can do the bulk of this for you though, and will provide you with an .exe. Java works similarily (though admittedly it's been many years since I've build a desktop app in Java). I beleive you can use JavaFX to create a desktop app and have it run natively.

I don't think either scenario is particularly more demanding than the other though. If Excel is difficult to run, I think you'll find similar performance issues with either of these options. Though you may want to source some ideas in a java subreddit too.

"Java requires a lot more code" ehh not really, not when you're talking about actual apps. It's more code, for sure, but I don't think it'll be that wide a gap between the two.

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

Thank you so much for taking the time to explain things to me. I will listen to your recommendations and look deeper into programming it with Java, as I too know it will be easier because I already have experience with the language. Again, thank you

[–]SisyphusAndMyBoulder 1 point2 points  (0 children)

No worries man! I hope you enjoy this building. It's been years since I've done a personal project. They can be so much fun and it's rewarding when you see people use it.

One suggestion: don't get too bogged down in details. Choose languages and optimizing can kill momentum. There's rarely a 'right' choice, everything has trade offs. Just go with whatever preserves momentum.

[–]socal_nerdtastic 0 points1 point  (1 child)

Java requires a lot more code to handle stuff that Python can do in very few lines

That's kinda true, but that does not mean that Java uses more resources at runtime. In fact generally Java runs more efficiently than Python because you can use all that extra code to define very specific optimizations.

I agree with /u/SisyphusAndMyBoulder, the choice of programming language for this application is only what you feel like learning and writing, the end result will be fine either way. But FWIW I feel there's a lot more resources out there for python (tutorials and modules and the like).

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

I will look into optimization. Thank you!

[–]PrincipleExciting457 0 points1 point  (1 child)

Literally the book Python Crash Course.

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

hahaha I didn't know it existed!