I am totally new to programming and I have chosen Delphi as the programming language that I would like to learn.
I basically want to build tools that will fill and submit web forms using sockets and I want them to be multi threaded as well.
I would love for them to be feature rich and perform correctly.
I am in no real rush to do this as I do understand that it takes time to become efficient at anything (especially programming). However, I do want to take the shortest path that I can in learning.
If it were possible I would love to go to school to learn the language but it seems like there are no schools in the US that teach it.
I have found quite a good bit of information on the internet that has helped me gain a basic knowledge of how things work inside the IDE and how to build basic apps but I want to be able to build really good apps that these tutorial do not teach me how to do.
So.. My question is how do I go about becoming an expert Delphi programmer without having any "Real Teacher" to guide me? How did you guys learn?
Would learning another programming language with the help of a teacher and them coming back to delphi make sense?
Delphi is great.
I learned the tools in a classroom in the US, over a three-day course. This was a huge benefit, and a big jump start.
I then came back to the office and starting writing programs that I needed, and would actually use, and continue to use for quite some time. I constantly improved the programs. It's essential to use the tools that you develop and to understand the view point of the user.
To take the next big step, and become a great programmer, it goes beyond learning the tools. You should have some formal education to learn some of the basic principals. I had this before I learned Delphi. That doesn't mean you can't self study them on your own, but you can't learn them through trial and error.
Learn about design patterns.
Consider best practices. Essentially, utilizing best practices allows you to learn from other people's mistakes instead of your own. If everybody else does something a certain way, it's because the method proved to be reliable over time.
Embrace common UI principles. If your UI acts just like everyone else's, then the user will know how to use it without reading the documentation.
Learn software development life cycles, such as the agile system development life cycle.
You should write another text editor, and use it. You should also write programs that do something that nobody has ever done before.
Write something today.
A couple years ago I tried to learn Delphi and then gave up in frustration. I was learning on my own and had a difficult time with the incomplete docs and few current books. In hindsight, outdated books weren't as problematic as the more current books because the more current books are written for an audience that knows both Pascal and Delphi and thus leave out a lot of crucial info for the newbie. I was working on porting a VB6 project and ended up using .Net which was more familiar given my experience in VB and Java.
Just recently I had to write a quick little utility that needed some direct Win32 functionality and I thought it would be a good project for Delphi. Small, fast, Win32. I dusted off my license and started poking around again. In the intervening years I've learned a few more languages and was less stumped by the Pascal syntax than my previous attempt. In a few hours I had finished my task and I decided to try to learn a little more.
So far, I've been really impressed with the Delphi 5 Developer Guide. It has opened my eyes to the elegance of the VCL and Delphi. There are more recent versions, but I think this one is perhaps the best because it deals with a version of Delphi before the now defunct Kylix project. Books that are written for version 6 thru 2006 spend way too much time describing either Kylix or Delphi.Net, both of which are dead and useless to spend time learning. The Delphi 5 books are equally as long as later editions, but spend all of those pages on the Win32 features of the VCL and some very valuable tutorials on Pascal (which is handy for those of us that went through our school years without learning Pascal).
How do you learn any of the new stuff that has happened since Delphi 5? I think Bob Swart's short update books are probably best. You can find them here. A lot of folks like Marco Cantu's books as well, but I personally haven't found his books very useful.
Good luck! I look forward to reading more suggestions.
If I understand what you are attempting properly...you are starting at he hard end..
I have been programming (Windows apps) in Delphi for a long time and My first attempt at a multi threaded http server conversation (using Indy) failed miserably - it did work (sort of) even at first-ish attempt but really it was miserable failure. So multi threading is "tricky" or just hard, maybe.
To fill and submit a web form - first work out how to fill in the online form itself - this will educated you about what is going on, you can do this quite reasonably with the TWebBrowser component (I've just done it). Then work out how to press the submit button on the online form. Remember you will be dealing with a process that is removed from you and that you do not have ultimate control over. Good luck (you will need perseverance too).
If you are looking to become an expert in Delphi, you will also need to become an expert in Windows...unless I misunderstand your intentions. Two great resources are:
You'll have to convert samples to Delphi, but hey, that's great practice too.
As I mentioned in my other answer, check out Mark Russinovich's Windows Operating Systems Internals Curriculum which is offered for free. You will not only learn how Windows works, but it is a good "Operating Systems 101" type course.
I am a self-taught programmer. I started programming at the age of 12, when I got my hands on Delphi 4 Personal, which was distributed in computer magazines free of charge. (Yes, this is basically why today I am a Delphi expert. In retrospect, hence, it was a very fruitful tactical decision of Borland to make a Personal edition. Surely they got a very large number of developers this way.)
I learned everything by studying examples and by trial and error. This took quite a few years, but it surely worked. Also, since Delphi is a native Win32 compiler, to master Delphi development, you need to master Win32 development. An invaluable resource then is MSDN and general Win32 programming books (such as The Old New Thing by Microsoft legend Raymond Chen). Also, don't forget there is quite a number of interesting good Delphi blogs.
Also, to push further as a programmer, you need to practice, on "hard" things.
I support what's been said above. Furthermore, I will say pick a non trivial project and work on it in Delphi! A tool you have wanted to have but you're yet to find something that meets your needs exactly or even even something that you already used and you want to see if you can develop something similar in Delphi. That's how I learned Delphi...(I am still learning. I started working in Delphi about 3 months ago but it's not my first language so some of the knowledge transfered. But thinking about it, I wish I had learned Delphi first!). You have also probably heard this many times but read good and well written code! Every time I learn about a new Delphi function, I try to take some time and read its implementation and I have learned couple things that way!