diff --git a/what_next.md b/what_next.md index fd16c3b4..cb3c1730 100644 --- a/what_next.md +++ b/what_next.md @@ -12,32 +12,48 @@ Once you are able to do this, you can claim to be a Python programmer. Now, imme If you found that program easy, here's another one: + The replace command can be as simple or as sophisticated as you wish, from simple string substitution to looking for patterns (regular expressions). ## Next Projects -If you found above programs easy to create, then look at this comprehensive list of projects and try writing your own programs: https://github.com/thekarangoel/Projects#numbers (the same list is also at [Martyr2's Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/)). +If you found above programs easy to create, then look at this comprehensive list of projects and try writing your own programs: https://github.com/thekarangoel/Projects#numbers. + + Also see: -- [Exercises for Programmers: 57 Challenges to Develop Your Coding Skills](https://pragprog.com/book/bhwb/exercises-for-programmers) +- [Exercises for Programmers: 57 Challenges to Develop Your Coding Skills](https://pragprog.com/titles/bhwb/exercises-for-programmers/) + + ## Example Code The best way to learn a programming language is to write a lot of code and read a lot of code: - [Python Cookbook](http://code.activestate.com/recipes/langs/python/) is an extremely valuable collection of recipes or tips on how to solve certain kinds of problems using Python. This is a must-read for every Python user. -- [Python Module of the Week](http://pymotw.com/2/contents.html) is another excellent must-read guide to the [Standard Library](./stdlib.md#stdlib). +- [Python Module of the Week](https://pymotw.com/3/) is another excellent must-read guide to the [Standard Library](./stdlib.md#stdlib). ## Advice - [The Hitchhiker's Guide to Python!](http://docs.python-guide.org/en/latest/) - [The Elements of Python Style](https://github.com/amontalenti/elements-of-python-style) -- [Python Big Picture](http://slott-softwarearchitect.blogspot.ca/2013/06/python-big-picture-whats-roadmap.html) +- [Python Big Picture](https://slott56.github.io) + + ## Videos @@ -48,19 +64,31 @@ The best way to learn a programming language is to write a lot of code and read - [Official Python Dos and Don'ts](http://docs.python.org/3/howto/doanddont.html) - [Official Python FAQ](http://www.python.org/doc/faq/general/) + + - [StackOverflow questions tagged with python](http://stackoverflow.com/questions/tagged/python) ## Tutorials - [Hidden features of Python](http://stackoverflow.com/q/101268/4869) - [What's the one code snippet/python trick/etc did you wish you knew when you learned python?](http://www.reddit.com/r/Python/comments/19dir2/whats_the_one_code_snippetpython_tricketc_did_you/) + ## Discussion + Make sure you do your homework by trying to solving the problem yourself first and [ask smart questions](http://catb.org/~esr/faqs/smart-questions.html). @@ -95,18 +123,36 @@ There are lots of choices for GUI using Python: - This is the Python binding for the GTK+ toolkit which is the foundation upon which GNOME is built. GTK+ has many quirks in usage but once you become comfortable, you can create GUI apps fast. The Glade graphical interface designer is indispensable. The documentation is yet to improve. GTK+ works well on GNU/Linux but its port to Windows is incomplete. You can create both free as well as proprietary software using GTK+. To get started, read the [PyGTK tutorial](http://www.pygtk.org/tutorial.html). - PyQt - - This is the Python binding for the Qt toolkit which is the foundation upon which the KDE is built. Qt is extremely easy to use and very powerful especially due to the Qt Designer and the amazing Qt documentation. PyQt is free if you want to create open source (GPL'ed) software and you need to buy it if you want to create proprietary closed source software. Starting with Qt 4.5 you can use it to create non-GPL software as well. To get started, read about [PySide](http://qt-project.org/wiki/PySide). + - This is the Python binding for the Qt toolkit which is the foundation upon which the KDE is built. Qt is extremely easy to use and very powerful especially due to the Qt Designer and the amazing Qt documentation. PyQt is free if you want to create open source (GPL'ed) software and you need to buy it if you want to create proprietary closed source software. Starting with Qt 4.5 you can use it to create non-GPL software as well. + - wxPython - - This is the Python bindings for the wxWidgets toolkit. wxPython has a learning curve associated with it. However, it is very portable and runs on GNU/Linux, Windows, Mac and even embedded platforms. There are many IDEs available for wxPython which include GUI designers as well such as [SPE (Stani's Python Editor)](http://spe.pycs.net/) and the [wxGlade](http://wxglade.sourceforge.net/) GUI builder. You can create free as well as proprietary software using wxPython. To get started, read the [wxPython tutorial](http://zetcode.com/wxpython/). + - This is the Python bindings for the wxWidgets toolkit. wxPython has a learning curve associated with it. However, it is very portable and runs on GNU/Linux, Windows, Mac and even embedded platforms. There are many IDEs available for wxPython which include GUI designers as well as the [wxGlade](http://wxglade.sourceforge.net/) GUI builder. You can create free as well as proprietary software using wxPython. + ### Summary of GUI Tools + Unfortunately, there is no one standard GUI tool for Python. I suggest that you choose one of the above tools depending on your situation. The first factor is whether you are willing to pay to use any of the GUI tools. The second factor is whether you want the program to run only on Windows or on Mac and GNU/Linux or all of them. The third factor, if GNU/Linux is a chosen platform, is whether you are a KDE or GNOME user on GNU/Linux. + + ## Various Implementations @@ -119,13 +165,22 @@ There are also other software that can run your Python programs: - [Jython](http://www.jython.org) - A Python implementation that runs on the Java platform. This means you can use Java libraries and classes from within Python language and vice-versa. + + -There are also others such as [CLPython](http://common-lisp.net/project/clpython/) - a Python implementation written in Common Lisp and [Brython](http://brython.info/) which is an implementation on top of a JavaScript interpreter which could mean that you can use Python (instead of JavaScript) to write your web-browser ("Ajax") programs. +There are also others such as [CLPython](http://common-lisp.net/project/clpython/) - a Python implementation written in Common Lisp Each of these implementations have their specialized areas where they are useful. @@ -135,7 +190,10 @@ When you start writing larger programs, you should definitely learn more about a - [Functional Programming Howto by A.M. Kuchling](http://docs.python.org/3/howto/functional.html) - [Functional programming chapter in 'Dive Into Python' book](http://www.diveintopython.net/functional_programming/index.html) + - [Funcy library](https://github.com/Suor/funcy) - [PyToolz library](http://toolz.readthedocs.org/en/latest/)