IWETHEY v. 0.3.0 | TODO
1,095 registered users | 0 active users | 0 LpH | Statistics
Login | Create New User
IWETHEY Banner

Welcome to IWETHEY!

New Programming vs. Developing Software
Hi Everybody!

Since I just stubled across this forum, and since the people here appear to be a friendly and open people, I'll try and ask something that's long been on my mind.

Three years ago, I engaged in a journey to learn how to program (since I had an idea of a software I wanted, and still want to develop). Three years went by, and meanwhile I've "learned" quite something about programming. I've played with C, C++, C# (Mono), D, Pascal, some BASIC dialects (including but not limited to VisualBasic), bash, Java, JavaScript, ASP, PHP, brainfuck, SQL, even a little ASM (LILO sourcecode) and probably a couple of other languages.

I've seen programs using graphical libraries such as Gtk+, Gtk#, Qt, whatever it's called what Windows uses, and whatever it's called what Borland uses.

In those of the languages that are so-called object-oriented languages (whatever that really means is still beyond me) I've designed small classes or class hierarchies. In most of the languages listed above I've written at least one 200+ LOC program. MOST of the languages, mind you :-). I feel the most comfortable with C though, having written my Longest Programm Ever (something around 3000 LOC) in that language.

I'm perfectly aware that I'm not much more but a miserable newbie to all this.

Still, there's the desire to develop this program, this application, and have it be a _real_ program that other people can use and enjoy. The problem's just... my knowledge is quite enough to know how difficult this is. It involves many things you won't find in books like "The C Programming Language". Reading Joel On Software ain't enough, either. I'm also not going to study computer science since I right-out _hate_ mathmatics (the exception: I'll delve into maths if it'll help me solve a problem) and also have other plans for my future work life.

With these restrictions, and given the above knowledge profile... is there any kind of information you could point me to, or tips/hints/whatever you would have me that could help with reaching the goal of developing a real, working, useful application (nothing trivial)?

Any reply greatly appreciated :-)

With best regards from Germany,
Raphael
--
NIETS IS ONMOGELIJK!
New easy stuff
97% of any idea for software is already written and available on the web with the source code so you can download and modify as needed. Use google to research others who have a similar idea. Think broadly, for example if you want to build a taxi dispatch software look at plumbing software as dispatching is also a part of the plumbing business. Get what you can, modify to your specific needs and distribute. Good luck, and welcome aboard
thanx,
bill
Time for Lord Stanley to get a Tan
questions, help? [link|mailto:pappas@catholic.org|email pappas at catholic.org]
New Conspicuously absent from the PL list
My recommendation for starting (as well as sustaining) programming languages is Python - though Ruby is a satisfying substitute. But then I don't think your stated problem is PL specific related.

Most software development is about (a) good ideas to solve an itch; (b) meticulous reasoning; and (c) dealing with frustration when points a & b go incendiary - i.e. patience. Beyond that, you'd have to be more specific about the nature and breadth of the particular program you are trying to design.
New Re: Conspicuously absent from the PL list
> Conspicuously absent from the PL list (Python)

Well, I did modify Seth Nickell's gnome-blog ([link|http://www.gnome.org/~seth/gnome-blog/|http://www.gnome.org/~seth/gnome-blog/]) to my needs some time ago, which is written in Python. It's a good language; I still feel more turned on by C ... preference maybe.

> Most software development is about (a) good ideas to solve an itch; (b) meticulous reasoning; and (c) dealing with frustration when points a & b go incendiary - i.e. patience. Beyond that, you'd have to be more specific about the nature and breadth of the particular program you are trying to design.

That sounds most interesting.

Let me give you a brief explanation of what I want to do. The specific itch this is supposed to scratch is the level of computer-illiteracy in my family, plus my own habits in using a computer (which are a little wierd). Since pictures say more than words, here's a picture of a prototype I tried to build recently:

[link|http://www.schwarzschmid.de/photoalbum/albums/computerstuff/aac.png|http://www.schwarzsc...uterstuff/aac.png]

So now I'll probably get flamed since I was talking about a user interface all the time, of which there are so many already :-). This prototype is actually in use right now by my grandmother (she's been using WindowMaker up until now), and she likes it. "Finally I don't have to mess with these 'windows' I never understood anymore". As you can clearly see from the screenshot, there's only one window open at a time.

Challenges include:
* Make it possible for the user to put every "thing" (s)he sees as a bookmark into the bookmarks list.
* Have the interface revolve around a historic metaphor, i.e., the "Back" and "Forward" buttons work reliable, all the time.
* Implement a system that allows other people to have their applications interact with this environment. For example, I believe the interface should never disturb the user, so there shan't be any "blocking" dialogs. Instead I'd like to have speech bubbles "coming out" from somewhere in the empty space above the Help button.
* Have the damn clock work (do I need threads for this? How do threads work? (This is probably a rather easy "challenge", since it'll be solved with a little research and programming)

Note the idea for this has been conceived in 1999 already, so there hasn't been any Longhorn around back then. I had it in my mind for about two years, before in 2001 I decided to learn programming myself.

Back to your points.

a) There's an itch
c) There's been patience and I'm willing to show more patience

I'm a little unsure as to what you mean by point (b). Do you mean reasoning regarding design descisions?

I think my main problem is that I have to design an entire system (with all the merits, like having its own live and all) instead of an application. There's so many things to consider. One right descision here could jeopardize something entirely different there. Could as well be wrong with that assumption though.

From what I understand from boxley's post above, do you mean I should just get started and not care too much?

Sorry for my using "thing" so often; I haven't been in an English-speaking country for quite a while.

Thanks!

- Raphael
--
NIETS IS ONMOGELIJK!
New take a look at squeak, it is wonderful for what you are
attempting, if I had to do it in a hurry, thats where I would go or I would swipe scotty for an interface as it is extremely modular.
[link|http://www.squeak.org/|http://www.squeak.org/]
[link|http://wwwhome.cs.utwente.nl/~schoenw/scotty/|http://wwwhome.cs.ut.../~schoenw/scotty/] now scotty is not only a network monitor, it is a graphical interface framework, so everyplace they mention insert a snmp command picture grannies stuff going there.
thanx,
bill
Time for Lord Stanley to get a Tan
questions, help? [link|mailto:pappas@catholic.org|email pappas at catholic.org]
New Given that your itch is related to Window Management
C is probably the correct route to go. Don't deal with WM too much, so I can't help much on the particulars - though your current questions seem related more to using API's and developing your own set.
New Re: Given that your itch is related to Window Management
My wife will arrive at the train station in a couple of minutes, and I have to pick her up, so not much time.

Thanks a million for your replies though!

Maybe I talked too much without saying anything useful. My main problem is: I could very well go and just implement a callback method for every widget, write a couple of supporting functions, and it'd basically do what I want it to do, BUT: would it be properly designed software? Like, maintainable, extendable, with APIs to the outside world, configurable, etc etc etc. Probably not, and that's where I need some support, because you can read up everything on _programming_ in books or on the web, but not very much about actually _designing_ software.

I'll check back on monday, or so!

Bests, Raphael
--
NIETS IS ONMOGELIJK!
New Remember, May 31st is Memorial Day in the US...
Of which MANY of us live.

Just understand that *SOME* of us HATE things that get in the way as well.

For me, Microsoft Windoze gets in my way all the time. Horrible.

GNOME has some thing I'd like to see go. Some things I'd really love to see back, mostly in terms of how the environment/window manager reacts to events or notices.

Of course, getting Havoc Pennington to understand this would be impossible.

There is something about this place/group, we call it the IWETHEY Group Mind, very few things escape comment here. I feel that some of the best minds in the entire IT industry gather here at least once every few days.

Oh, BTW, welcome, you sound like you'll fit in fine... Unless you can't bear CRConrad's temperment, he seems to be the King "Flame Lord" hanging around.
--
[link|mailto:greg@gregfolkert.net|greg],
[link|http://www.iwethey.org/ed_curry|REMEMBER ED CURRY!] @ iwethey

Give a man a match, he'll be warm for a minute.
Set him on fire, he'll be warm for the rest of his life!
New Start with the design
What should the program do at a very high level.
What features do you want to have in it?
Break down the features.
Continue until you have defined everything that you can think of including.

THEN.

Put it aside for a day or two. Then review it again.

What did you miss? Add, change, delete, color, size, position, query, options?

THEN

Choose a language the gives you the most tools to help you develop your program. Most of us are told what tools to use. You have the luxury of choosing what works best.

Lastly, feel free to post parts of your design for critique and comments.
New Learn about relational databases
________________
oop.ismad.com
New There are levels and levels
The first thing to consider is the sequence of algorithm, program, application and system.

Most people enter programming at the level of "program" (surprize, surprize!), but it's too high and too low at the same time. On the one hand, to really do something brand new and unusual, you often need an algorithm - a sequence of logical steps that accomplishes a particular task. Algorithms are closer to theory, they are mostly expressed in natural language and mthematical formulas, and usually not executed by computer directly.

A program is an algorithm that's writtem in a way so that a computer can understand it. Program takes care of such mundane aspect of the problem as getting data to the algorithm and making its output available to users. That's what you have been doing. I suspect that most of your algorithms are very simple (judging by the size of your programs).

An application is a huge program, or, more often, a number of programs designed to work together. This is where most of real, professional programmers work. It adds things like UI, performance, moduarity, deployment and so on. An example of an application would be, say, GCC or Mozilla.

The last level I have to mention is a system. It's a set of multiple applications deployed to solve a particular problem or provide a service. An example would be this web site or a Linix distribution.

You have to have understanding of all levels to be a programmer. You have to master certain things at each level. For example, at the level of algorithm you need to understand the performance considerations: memory and execution time as function of data set size, data structures, random numbers and so on.

At the level of programs you need to understand assembly, compilers, modern CPU architecture, IO, interprocess communications, network, OSes.

At the level of application, you need to consider things like usability, maintanability, modules, interfaces, libraries.

And, if you ever get to the level of systems, you'll vbe concerning yourself with uptime, survivability, scalability and so on.


You say:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
I'm also not going to study computer science since I right-out _hate_ mathmatics (the exception: I'll delve into maths if it'll help me solve a problem) and also have other plans for my future work life.
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Well, guess what, with an attitude like that you will never be a good programmer. You don't study things to solve your problem, you study them because it's fun and because you just can't sleep at night if you don't understand how this dumb machine gotten so smart. Programmers (good ones) don't write with "the goal of developing a real, working, useful application (nothing trivial)" - they write because it's fun, or to learn something.

Now, if you want to get into the guts of computers, the computer language books aren't going to help. Computer languages are tools. You don't learn to understand cars by reading about screwdrivers. Find something about compilers, for starters. Learn about things like lists and dictionaries. For stimulating intellectual challenge, learn SQL. Perl regexps are fun too. I would join those who recommend Python as the first language. C is way too low-level to be a good learning experience - you may as well start with Assembly. Oh, BTW, you do need to try a bit of CISC assembly language - Intel or Power PC will do. RISC is less useful - the compiler will make a mash out of your program anyway, trying to account for all the peculiarities of a RISC CPU.

As to your request, the hardest part of programming, like in any other human activity, is to come up with a brand-new idea for something to do. Most things one can come up with are already done. If you are creative, try inventing a new computer game. Even in that case, you will probably be able to start with an existion open source game and morph it into something you want.




--

Buy high, sell sober.
     Programming vs. Developing Software - (rapha) - (10)
         easy stuff - (boxley)
         Conspicuously absent from the PL list - (ChrisR) - (6)
             Re: Conspicuously absent from the PL list - (rapha) - (5)
                 take a look at squeak, it is wonderful for what you are - (boxley)
                 Given that your itch is related to Window Management - (ChrisR) - (3)
                     Re: Given that your itch is related to Window Management - (rapha) - (2)
                         Remember, May 31st is Memorial Day in the US... - (folkert)
                         Start with the design - (jbrabeck)
         Learn about relational databases -NT - (tablizer)
         There are levels and levels - (Arkadiy)

CCTBRRDS!
356 ms