76 lines
4.9 KiB
Markdown
76 lines
4.9 KiB
Markdown
# Some random recommendations
|
|
|
|
After our twenty days of python together you should have a solid understanding of the world of programming.
|
|
The foundation of all essential concepts should be clear enough to understand code when it is in front of you.
|
|
A blank slate could still pose a challenge but for that, here are some links and recommendations.
|
|
|
|
## IDE
|
|
|
|
Maybe try out some other IDE to see if you like the workflow or layout better.
|
|
I'm a big fan of [vim](https://en.wikipedia.org/wiki/Vim_(text_editor)), especially with some good [plugins](https://gitea.86thumbs.net/waldek/linux_course_doc/src/branch/master/modules/qualifying/learning_vim_configuration.md).
|
|
It's not an *easy* editor to learn but the payoff is pretty great.
|
|
For the more *normal* people I would recommend having a look at the following editors, in no particular order.
|
|
|
|
* [atom](https://atom.io/)
|
|
* [vscode](https://code.visualstudio.com/)
|
|
* [brackets](https://brackets.io/)
|
|
* [spyder](https://www.spyder-ide.org/) for a more scientific approach
|
|
|
|
Don't hop around too much though.
|
|
If you're a bit bored with pycharm it could be refreshing to *see* your code through a different window.
|
|
|
|
## Syntax
|
|
|
|
Start paying attention to the style guides that pop up in your IDE and follow up on them by reading the actual rules.
|
|
It can be good way to discover some do's and don't and help you to make your code more readable.
|
|
I would also recommend you start browsing online for some coding project in a field of your interests.
|
|
The bigger the project, the higher the chance it follows a specific style.
|
|
By reading and trying to understand their code, you'll start to build a better feel how to annotate, structure and make your code more readable.
|
|
As this is a *very* subjective topic I can only point you to projects I like.
|
|
|
|
* [python-language-server](https://github.com/palantir/python-language-server)
|
|
* [python-osc](https://github.com/attwad/python-osc)
|
|
* [urwid](https://urwid.org/index.html)
|
|
* [natural language toolkit](https://www.nltk.org/)
|
|
|
|
## Concepts
|
|
|
|
We touched on *most* of the elementary concepts but we did go over them quite quickly.
|
|
Take your time to review all base concepts with small exercises and try to chain them together into bigger projects.
|
|
Some python specific *new* concepts I would highly advise you to look into are the following.
|
|
|
|
* [decorators](https://realpython.com/primer-on-python-decorators/)
|
|
* [getters and setters](https://stackoverflow.com/questions/2627002/whats-the-pythonic-way-to-use-getters-and-setters)
|
|
* [concurrency](https://realpython.com/python-concurrency/)
|
|
* [threading vs async vs multiprocessing](https://leimao.github.io/blog/Python-Concurrency-High-Level/)
|
|
* [design patterns](https://python-patterns.guide/)
|
|
* [memory management in python](https://realpython.com/python-memory-management/)
|
|
* [virtual environments](https://docs.python.org/3/tutorial/venv.html)
|
|
|
|
If you're interested in creating web applications I would start out with [bottle](https://bottlepy.org/docs/dev/), work your way up to [flask](https://www.fullstackpython.com/flask.html) and maybe move over to [django](https://www.djangoproject.com/).
|
|
You'll definitely need to learn [SQL](https://en.wikipedia.org/wiki/SQL) at some point but you can make your life easier by using [sqlalchemy](https://www.sqlalchemy.org/).
|
|
|
|
If you want to dive deep into data science you'll need get comfortable with [numpy](https://numpy.org/), [pandas](https://pandas.pydata.org/) and [matplotlib](https://matplotlib.org/).
|
|
The easiest way to get comfortable with all of those is probably [jupyter notebook](https://jupyter-notebook.readthedocs.io/en/stable/index.html) which is an IDE that you use in your browser.
|
|
It's quite different from the pycharm you're used to but it's a very good tool to do data analysis.
|
|
|
|
If robotics is your thing you might want to give [micropython](https://micropython.org/) a go.
|
|
I've never used it myself but I've heard good things about it.
|
|
|
|
## Books
|
|
|
|
These are some books I've actually read and enjoyed.
|
|
|
|
* [mastering python design patterns](https://www.amazon.de/-/en/Kamon-Ayeva/dp/1788837487/ref=sr_1_2?keywords=python+design+muster&qid=1651784267&sprefix=python+des%2Caps%2C82&sr=8-2)
|
|
* [fluent python](https://www.amazon.de/-/en/Luciano-Ramalho-dp-1492056359/dp/1492056359/ref=dp_ob_title_bk)
|
|
* [design patterns](https://www.amazon.de/-/en/Erich-Gamma/dp/9332555400/ref=sr_1_9?keywords=gang+of+four+design+muster&qid=1651784413&sprefix=gang+of+%2Caps%2C68&sr=8-9)
|
|
* [learn python the hard way](https://learnpythonthehardway.org/python3/)
|
|
* [automate the boring stuff](https://automatetheboringstuff.com/)
|
|
|
|
# Linux
|
|
|
|
If you enjoyed the experience of the computers at the school you should give [linux](https://en.wikipedia.org/wiki/Linux) a go at home!
|
|
You used a [debian](https://www.debian.org/) machine with [GNOME](https://www.gnome.org/) as a graphical interface.
|
|
If you're really motivated you could read through my [introduction to linux](https://gitea.86thumbs.net/waldek/linux_short) course.
|
|
It's a work in progress and all feedback is welcome.
|