How many of you here are using Igor without any programing background?

Hi Guys

Just want to discuss as the topic title.

Cheers,
jabberwocky wrote:
I would fall into this category! All new to me.

But then, you seem to be correcting that situation, judging from your other posts :)

John Weeks
WaveMetrics, Inc.
support@wavemetrics.com
I started off with no programming experience whatsoever. Then I got into IGOR stuff, then C and a bit of C++ (for XOP's), then Python. It's a long slippery slope.
I also started my programming with Igor. I am dabbling a bit with Python and I watched the programming class for scientists on MIT's open courseware (it is class 6.00 in MIT speak). A good series of lectures. I would also like to improve my skills especially in structure based programming and eventually writing my own XOPs.

Any tips on learning resources?

Andy
Some thoughts:
1) For improving C programming get "The C programming language" by Kernighan and Ritchie, a true classic and reference book. Invaluable.
2) Examine the standard libraries to know what they offer you, i.e. read the XOP toolkit manual, be really familiar with all the functions and operations within IGOR.
3) Look at the XOP examples and try and improve on them.
4) Never, Never throw any code fragments away, get a good filing system for them. You'll always need a bit of one at a later stage. A good way of doing this for IGOR code is to submit a snippet.
5) Improve your knowledge of the C standard libraries.
6) Develop using gcc (OS X), it's much easier to port from OS X to Windows.
7) Develop your own coding style and keep consistent.
8) Comment your code liberally.
9) Learn more maths.
10) Learn more about pointers and what you can and can't do with them.
11) Write down important knowledge in a notebook (e.g. stuff like what row major and column major is all about), the notebook becomes a treasure trove of stuff you can't remember.
12) Ask questions.
13) Write code to solve important problems that you have - you end up helping other people by the code you write as well.
14) Practise writing code for fun.
Just to add to Andy's excellent list ...

* Learn the difference between writing code, compiling code, and running code as applied to any system you think that you want to use.

* Don't be afraid to try something and fail at it the first few times.

* Code to solve a specific problem, not to play around with an interesting software language.

* Search first to see whether someone else has already solved your problem for you.

* Understand the problem well enough to code it in stages as best possible.

--
J. J. Weimer
Chemistry / Chemical & Materials Engineering, UAHuntsville
This isn't directly related to programming, but I recommend that if you don't already use one, learn a version control system and use it religiously when you are coding. Pretty much every piece of code I write, whether it starts out as a simple script of a complete application, goes into version control. I like Subversion but Git is gaining in popularity.
For Igor programming ideas, look through the procedure files in the WaveMetrics Procedures folder.

Admittedly, some are more polished than others. But there are good ideas to be found there.

--Jim Prouty
Software Engineer, WaveMetrics, Inc.
On the thread topic- I had some FORTRAN and C experience writing laboratory data acquisition systems before acquiring Igor. That was before Labview existed... I bought Igor in 1990 (I think) with serial number 835.


Quote:
14) Practise writing code for fun.

We already knew Andy was a twisted individual :) But really, this describes WaveMetrics pretty well. There is presently no one here with a Computer Science degree.

I would add that it's very difficult to write code with a novice knowledge of any programming language; the typical problem requires many different parts of the language. So you try to read the manual, and it's hard to understand because you don't know where you're going when you start out. The only real solution I've found is to read through, then go back to the beginning and read again. The second time through you will understand much more because you will by then have some broader knowledge to base your understanding on.

In my training seminars, I tell people that there is no substitute for just floundering around. I illustrate it with a picture of a flounder :)

There is no substitute for browsing around in the reference manual, looking at available commands and imagining what you might do with them (this is fun for us twisted people). Then when a problem arises you may have a tickling recollection, "Didn't I see something that would help somewhere..." which often leads to using the Search Igor Files tab on the Help Browser.

John Weeks
WaveMetrics, Inc.
support@wavemetrics.com
johnweeks wrote:
jabberwocky wrote:
I would fall into this category! All new to me.

But then, you seem to be correcting that situation, judging from your other posts :)

John Weeks
WaveMetrics, Inc.
support@wavemetrics.com

Haha, I'm trying at least! You just don't get to see the amount of times I stare at the code blankly, thinking, "What have I gotten myself into?" If it wasn't for this forum I'd be so lost at the moment.

johnweeks wrote:
So you try to read the manual, and it's hard to understand because you don't know where you're going when you start out. The only real solution I've found is to read through, then go back to the beginning and read again. The second time through you will understand much more because you will by then have some broader knowledge to base your understanding on.

As a newbie and all I'd like to throw into this; the ability to select an operation and have it open the help file which describes it, related functions and the stuff associated with it is a god-send for me. That way I can see the operation in context which I find makes it easier to understand what the manual is telling me.
I find that programing, as any other skill, requires continuous practice so getting back into it required quite a few iterations of failed code. I started programing in high school. At the time, they were teaching QBASIC, TURBO PASCAL, and FoxPro, so the "structured programing" style used in Igor speaks to my roots (I still have trouble understanding recursion in object oriented programs).

jjweimer wrote:

* Search first to see whether someone else has already solved your problem for you.


This was my case up to not to long ago. I simply needed to remove baselines of 2nd and 3rd degree from my data. At the time, I was using SpXZeigR 315 for that, so many thanks Jeffrey! :). This is no longer an option in the most recent version, but I've kept a copy of Igor 5 to use it whenever I need it.

I find that the "Search Igor Files" tab int the help rarely gives me the answer that I need...way too many hits for a single word and none for more than two items. The pdf version of the manual is better for this.

My first choice when searching for information is this forum as well as the mailing list. This is how I use google to help me do it.

site:opsxserve.magnet.fsu.edu/ query1 [query2,..]

A wikibook of the manual would be something very useful to have. Users could provide feedback as well as search it without having to load the complete pdf file.

Isaac H