Mega Newbie Questions: Probably FAQs

Z

Zeph

I'm pretty well of a mind to pick up Python. I like it because it seems
to have a fair degree of functionality and is accessible to someone
without a PhD in computer sciences. This is my second day of
investigation, and I'm astounded by the huge ecosystem that surrounds
it. I have a number of questions that probably should be on a FAQ, but I
haven't found them. I'll explain my goals and needs, perhaps someone
here will have some recommendations

1) I want to write high-level apps that are db connected, networkable
and cross-platform: Linux, Mac OSX, Windows. I know there are apps that
can convert to Linux or Windows as stand-alone executables, is there
also one that will permit me to convert to MacOSX?

1b) Are these executable completely free from the need of the average
user needing to install Python. Basically, I want to write and sell
"compiled" apps.

2) I want a real and native GUI. wxPython or PyQT? My concerns are about
cross-platform and responsiveness of GUI. I suspect that this will be
one of the gravest issues for the long run.

3) Can someone recommend a good framework that will enable me to keep
things well sorted out, and easy to maintain as my apps grow? (I'm
considering MVC, but have no idea how to apply it until I've gone beyond
"Hello World").

4) There are a lot of books and tutorials out there, but they are of the
proof-of-concept type. Specifically, a tutorial might teach me Hello
World, but not really care about the framework, because it's a very
simple item, and the point is simply to get me coding. I'd like to start
off with an established, tested and reputable system whose habits I can
ingrain from day one, rather than figure it out later. Can someone
recommend a good book, or your favourite tutorials? Perhaps even one
that assumes MVC as the framework?

5) Following the above, is there a framework that assumes tcp/ip udp
networking, database connectivity? My first app will be in large part a
networkable database type app where two or more users can share the same
file concurrently.

6) Since I've been a web-developer for a long time (over 10 years), I
never properly learned OOP. Recommended tutorials?

7) I'm developing on WinXP and for the IDE, I'm considering
theKompany.com's BlackAdder, Komodo or Eclipse. Any very strong
negatives in regards to either of these?

8) Can anyone speak to the point, or point out a useful comparison
between Python and RealBasic?

Thanks.
 
A

AlbaClause

Zeph wrote:


4) There are a lot of books and tutorials out there, but they are of the
proof-of-concept type. Specifically, a tutorial might teach me Hello
World, but not really care about the framework, because it's a very
simple item, and the point is simply to get me coding. I'd like to start
off with an established, tested and reputable system whose habits I can
ingrain from day one, rather than figure it out later. Can someone
recommend a good book, or your favourite tutorials? Perhaps even one
that assumes MVC as the framework?

There is no "tutorial" that will teach you good coding habits. You pretty
much have to develop them on your own. Looking at other people's source
is a good way to learn "accepted" coding habits.

Python, in and of itself, is a good language for learning good programming
habits, as the interpreter forces you to use certain conventions that are
widely regarded as good coding structure. One of the things that many
Python detractors harp about, is that Python forces you to use a
considerable amount of whitespace. i.e. consistent indentation of code
blocks. However, good and consistent indentation is generally considered
to assist in making the source more readable and thus, easier to debug.
All in all, these conventions help you to develop some good habits by
producing runtime errors when you fail to observe them.



--
 
A

ajaksu

Zeph said:
1) I want to write high-level apps that are db connected, networkable
and cross-platform: Linux, Mac OSX, Windows. I know there are apps that
can convert to Linux or Windows as stand-alone executables, is there
also one that will permit me to convert to MacOSX?
Yes, py2app (http://undefined.org/python/py2app.html).
1b) Are these executable completely free from the need of the average
user needing to install Python. Basically, I want to write and sell
"compiled" apps.
Yes. However, you can have downloads of a dozen MBs for something that
could be 100KB for someone with the right pre-requisites already
installed. And I'd research a bit about decompiling those executables,
might be easier (or harder, in my case) than you thought :)
2) I want a real and native GUI. wxPython or PyQT? My concerns are about
cross-platform and responsiveness of GUI. I suspect that this will be
one of the gravest issues for the long run.
wxPython. Even if PyQT is "the best tool for the job", it'll cost you
to find that out (if you're planning to sell your software). So try
wxPython first. Actually, play with Dabo (http://dabodev.com/ ->
wxPython + DBs).
3) Can someone recommend a good framework that will enable me to keep
things well sorted out, and easy to maintain as my apps grow? (I'm
considering MVC, but have no idea how to apply it until I've gone beyond
"Hello World").
Framework... MVC... not my area, sorry. However, try a look at Envisage
(http://code.enthought.com/envisage/, also
http://code.enthought.com/traits/ seems relevant) PEAK
(http://peak.telecommunity.com/), PlugBoard
(http://plugboard.berlios.de/) and Dabo again. All of which pass miles
above my head, so if you figure them out please share the wisdom :)
4) There are a lot of books and tutorials out there, but they are of the
proof-of-concept type. Specifically, a tutorial might teach me Hello
World, but not really care about the framework, because it's a very
simple item, and the point is simply to get me coding. I'd like to start
off with an established, tested and reputable system whose habits I can
ingrain from day one, rather than figure it out later. Can someone
recommend a good book, or your favourite tutorials? Perhaps even one
that assumes MVC as the framework?
IMHO, you'd benefit from "wxPython in action"
(http://www.manning.com/rappin/). But see below.
5) Following the above, is there a framework that assumes tcp/ip udp
networking, database connectivity? My first app will be in large part a
networkable database type app where two or more users can share the same
file concurrently.
Sure, tons of frameworks somewhat like that. Web-based, mostly. And
targeting the sane approach of a DB server talking to clients. Share
the same file? What kind of file would that be? :)
6) Since I've been a web-developer for a long time (over 10 years), I
never properly learned OOP. Recommended tutorials?
http://diveintopython.org/object_oriented_framework/index.html -> I
love this one
http://www.voidspace.org.uk/python/articles/OOP.shtml -> gentle
http://www.ibiblio.org/g2swap/byteofpython/read/oops.html -> gentle
http://www.brpreiss.com/books/opus7/html/book.html -> not so gentle :)
And search this group for "Book" to get much better recommendations ;)
7) I'm developing on WinXP and for the IDE, I'm considering
theKompany.com's BlackAdder, Komodo or Eclipse. Any very strong
negatives in regards to either of these?
Only one: PyScripter is better
(http://mmm-experts.com/Products.aspx?ProductId=4). And SPE is very
good too (http://stani.be/python/spe). Two negatives, PyScripter and
SPE. Also, Eclipse is so heavy and bloated that I wonder what it
eclipses :)
8) Can anyone speak to the point, or point out a useful comparison
between Python and RealBasic?
Perhaps http://discuss.joelonsoftware.com/default.asp?design.4.70287.9

And a general recommendation: go for something easier as your very
first target. As you're a web-developer, writing simple and useful
tools (run tidy on files, simple pre-processors, bare-bones templating,
CSS inliner, etc.) first would be IMHO both rewarding and a great
learning opportunity.

Hoping this helps more than confuses,
Daniel
 
Z

Zeph

ajaksu said:
Hoping this helps more than confuses,

Thanks, these were the sort of answers I was looking for. I've
programmed in Basic, AppleScript, Pascal and Usertalk (Userland
Frontier), I've got a sense for development, it's just been a very, very
long time ago.

I do intend to start small and build up, but I want to front load my
learning curve, usually makes the other side of the curve more productive.
 
Z

Zeph

ajaksu said:
Zeph wrote:
And I'd research a bit about decompiling those executables,
might be easier (or harder, in my case) than you thought :)

Are you saying that generally python code is insecure? It hadn't
occurred to me, but I want to play in a fairly competitive field, and
I'd hate to have a competitor rip my app.
Framework... MVC... not my area, sorry.

I think a better word might have been "methodology", for example, as a
Coldfusion developer, I enjoy using Fusebox.
 
Y

Yu-Xi Lim

Zeph said:
1b) Are these executable completely free from the need of the average
user needing to install Python. Basically, I want to write and sell
"compiled" apps.

OSX and Linux installations nearly always come with Python pre-installed
(usually because they are required by other system software). Your only
concern should be the availability of additional Python libraries you
may use.
2) I want a real and native GUI. wxPython or PyQT? My concerns are about
cross-platform and responsiveness of GUI. I suspect that this will be
one of the gravest issues for the long run.

Tk is available on all but the most minimalistic of Python
distributions. It's also butt-ugly. wxPython is probably a good compromise.
3) Can someone recommend a good framework that will enable me to keep
things well sorted out, and easy to maintain as my apps grow? (I'm
considering MVC, but have no idea how to apply it until I've gone beyond
"Hello World").

Framework for what kind of apps? Web, native GUI, client-server, etc?
MVC is an abstract architecture rather than a specific implementation.
Even so, many implementations rarely employ a purely MVC design.
4) There are a lot of books and tutorials out there, but they are of the
proof-of-concept type. Specifically, a tutorial might teach me Hello
World, but not really care about the framework, because it's a very
simple item, and the point is simply to get me coding. I'd like to start
off with an established, tested and reputable system whose habits I can
ingrain from day one, rather than figure it out later. Can someone
recommend a good book, or your favourite tutorials? Perhaps even one
that assumes MVC as the framework?

For GUIs, and wxPython in particular, wxPython in Action would probably
be what you have in mind.
5) Following the above, is there a framework that assumes tcp/ip udp
networking, database connectivity? My first app will be in large part a
networkable database type app where two or more users can share the same
file concurrently.

Mix and match. I typically select "best of breed" libraries for the
necessary functionality. wxPython for GUI, SQLObject (when it gets too
clunky for the regular Python DBAPI), Twisted for networking.
6) Since I've been a web-developer for a long time (over 10 years), I
never properly learned OOP. Recommended tutorials?

OOP is overrated. A multi-paradigm language like Python lets you decide
what's best for your particular application. Most Python tutorials would
not focus on OOP specifically, unlike Java where you'd have to learn OOP
from day 1. OOP may be a suitable model for business logic, but feel
free to explore other alternatives for the other parts of your project.

But if you insist, try How to Think Like a Computer Scientist
(http://www.ibiblio.org/obp/thinkCSpy/). It takes the approach similar
to an introductory college-level CS course, which is typically heavy on
the OOP and data structures.
8) Can anyone speak to the point, or point out a useful comparison
between Python and RealBasic?

The size of the Python community is huge compared to RealBasic. And
you'll benefit from that alone by better answers to your questions,
better documentation, and better 3rd party libraries.


Side note: You seem like you've researched a bit, but unfortunately been
affected by the swirl of buzzwords. While there are usually valid
reasons for particular technologies to have so much hype behind them,
you should not neglect the alternatives. They may be the answer you seek.
 
A

AlbaClause

Zeph said:
ajaksu wrote:
I do intend to start small and build up, but I want to front load my
learning curve, usually makes the other side of the curve more productive.

Did you ever play on teeter-totters when you were a kid? I think that's
what they're called. Those board like things that are balanced in the
middle, one kid on each end, and as one kid goes up, the other kid goes
down.

Anyway, when I was a kid there was some teeter-totters in the yard at a
nearby apartment complex, and there were some teeter-totters in the park
behind my house. If you spend much time on these contraptions, you soon
realize that simply going up and down is not very much fun. We'd often
carry on in our activity as it was supposed to be, but, invariably, one of
us would be sitting on the low end and looking up at our playmate. With
an almost devilish grin, we'd hop off the teeter totter and send our good
buddy crashing to the ground. Such wonderful childhood fun.

Another activity that my brother and I took part in was shoplifting. We
devised a clever way of hording candy from the checkout aisles at a local
grocery store. What we'd do, is climb in under the conveyor belt cabinet
and reach out and bring entire boxes of candy bars, etcetera in under the
conveyor belt where we'd sit and eat away at our leisure. We never ever
got caught, and we went through probably hundreds of dollars worth of
candy. But we got greedy!

Hope this helps rather than confuses you.


--
 
Z

Zeph

Yu-Xi Lim said:
Framework for what kind of apps? Web, native GUI, client-server, etc?
MVC is an abstract architecture rather than a specific implementation.
Even so, many implementations rarely employ a purely MVC design.

Native GUI with some client-server abilities. Basically, it's a
database-inventory sort of thing with some pretty intense reporting.
Call it a productivity app--no need for intense graphics or massive
computation. Fundamentally, what I want is to be able to distribute a
"regular app", mainly for the Windows market, but I also want to offer
it to the Mac and Linux crowd--on one code base if possible.

I have on a number of occasions downloaded apps that required that
Visual Basic, or .Net or whatever runtimes be installed. I've never
liked or trusted these kinds of apps. Regardless of the quality that the
particular thing may have had, I didn't trust it and didn't like all of
the extra clutter that went along with it. This is why I'd prefer to
deliver some sort of stand alone solution--or at least something that
appears as such. Fundamentally, I want to put out a solid, slick and
professional product. Is Python still a good choice for me?

Back to the question: When I speak of framework, maybe I should have
used the term "methodology". I have excellent methods for coding my
web-apps (I like Fusebox) but not having created anything significant in
another language from scratch for over 10 years, I wouldn't know how to
start organizing my stuff so that it's long-term maintainable.
The size of the Python community is huge compared to RealBasic. And
you'll benefit from that alone by better answers to your questions,
better documentation, and better 3rd party libraries.

Excellent points.
Side note: You seem like you've researched a bit, but unfortunately been
affected by the swirl of buzzwords. While there are usually valid
reasons for particular technologies to have so much hype behind them,
you should not neglect the alternatives. They may be the answer you seek.

Yes. That's the problem with being a newb: you don't know what you don't
know, then when you do, it's obvious. I'm still seeing only the surface.

One question that does come to my mind is that of the notion of
decompiling or reverse engineering. Based on a comment someone made
earlier, is this a significant concern that I should have, if I want to
ship commercial software?

The stage I'm at right now is that I'm on the fence between REALbasic
and Python.

Here's how I see it, relevant to my situation:


REALbasic
Pros: A fairly rich system, excellent GUI, spits out a binary executable
for Win, Mac and Linux. One code base. Well documented, ever evolving.
Relatively reasonably priced for commercial purposes.

Cons: Closed source (what if they're bought out?) I'm not sure that I
can trust my investment of time to last 10 years. The language and IDE
is a tad strange to me. It has the word "Basic" (read: cheap,
half-assed, not-a-real-app) in it, which is not a particularly good term
to use in a pitch.

Unknown: Learning curve? Long-term value? Level of support?

Python
Pros: Free. Open source. Deep. Flexible. Rich community and third party
stuff. Well documented.

Cons: Interpreted.

Unknown: Secure (meaning not easily reverse engineered) code? Performance?


Further thoughts?
 
P

Peter Decker

Native GUI with some client-server abilities. Basically, it's a
database-inventory sort of thing with some pretty intense reporting.
Call it a productivity app--no need for intense graphics or massive
computation. Fundamentally, what I want is to be able to distribute a
"regular app", mainly for the Windows market, but I also want to offer
it to the Mac and Linux crowd--on one code base if possible.

You should really check out Dabo. It is an application framework
designed to create database apps in a really Pythonic way. Probably
the best way to start is to check out the screencasts - they really
show just how cool Dabo is. I'd start with the one on quickly creating
a database app:
http://leafe.com/screencasts/appwizard.html

The rest of them are listed at http://dabodev.com/documentation. I've
been using the UI module from Dabo for over a year, and it's
rock-solid.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,968
Messages
2,570,152
Members
46,698
Latest member
LydiaHalle

Latest Threads

Top