I'm going to give you some advice that has done me and many others some good. That is, "don't stop programming in any particular language."
Ah, someone who lives by my philosophy! Actually, I think that this point of view is only natural after you've spent enough time coding... But eventually, you're likely to stick with what you know... I'll explain in a moment...
I believe we could also use embedded Assembly language, like you can in C++.
Absolutely - In fact, in my experience, there isn't anything you can do in C/C++ (or any language) that also cannot be done in Delphi. Of course, some situations are simply easier to code using a specific language, isn't that why there are SO MANY languages...
Being a superstitious programmer means that you spend a lot of time reinventing the wheel instead of using existing, well-tested, built in language APIs.
I'm gonna have to say 'guilty as charged' - But this is a conscious decision. I like to *know* the details - I want to know how to build everything from scratch. It keeps me competent - And this has proven more than beneficial in my experience. But, as you have stated also, sometimes you end up 're-inventing' the wheel for no particular reason. Which is fine as a learning experience. But 'on the job' - You're WAY better off just 'putting the puzzle together and filling in the holes/resolving the bugs'. Why waste time/energy? I guarantee your boss would also agree...
At the same time, this IS why so many applications these day are buggier than hell - Too much 'puzzle work' designed with too many 'hands' - Without the proper time put in to troubleshoot it properly and resolve the issues - They spend countless hours troubleshooting their own code when the issue actually lays in the libraries. Sometimes it's easier to start from scratch then debug what someone else did. I've seen this lots and it's very frustrating (for me).
Which is why, with my OWN software - I will always go the extra mile if I don't trust the library I'm using. If I feel a need to rebuild it, I will - Hell, the code IS sitting right there... So I never need to look far for an example of how it should likely be coded.
Cen, I'm not saying that you are a superstitious programmer, especially since I don't know the actual context of that thought, I'm just attempting to help others understand that generally thinking that a programming language is broken is not the way to become a good programmer.
I've refused to use many languages due to this. I won't use Java because of the way it works, and I STILL won't touch .NET for similar reasons. But I DO try to understand the language BEFORE I decide to outright ignore a language. I study the advantages and disadvantages. I ignore these two languages because in my opinion, the disadvantages out-weigh the advantages. If I remember correctly, Vista comes with .NET by default though, which will likely (at least eventually) take .NET off of my 'blacklist'.
Don't get me wrong - when I said 'few flaws', I DID say this for a reason - Although I will admit, that even currently, I STILL do not know if the problem actually lays in the language. It's much more likely that the issue resolves around a package I installed into the IDE instead (and could easily be in the libraries included with Delphi) - Hell, the problems may EVEN be with Microsoft libraries that are used which are obviously included with Windows. But I HAVE seen on more than one occasion where my program ended up buggy - And it was NOT my code, I've had to modify installed packages a few times to resolve issues.
There are bugs in many programs - My experience is that when I take the time to code as much of my programs myself as possible, I end up with fewer 'unknown' issues - Usually ending up with none that I am aware of.
What MAKES Delphi such a catch in my opinion IS the packages that you can get (that and it compiles all the necessary libraries into the executable - Which is why I don't like Visual Basic/Java/.NET, etc...) I ABSOLUTELY LOVE the way that they integrate into the IDE - It makes programming a breeze. I often re-code these packages to suit my own needs. When you begin designing your own packages is when I think most people begin to realize the TRUE power of Delphi. I've never seen another language like it - Albeit, I'm using an older version of Delphi - I never updated because I was told the later versions no longer integrate the packages as well - I wanted to cry. And haven't even bothered to look at the latest releases because of this.
I know, I know... This certainly shows my 'superstitious side'
But hey - If it ain't broke - Why fix it? The issues I have run into have been 'mostly worked out' by now. I'm happy with the version I'm using. It allows me to design professional software and, in my opinion, I have no use for other languages due to Delphi's flexibility. Combined with a little database knowledge and PHP, I'm fully capable of designing any software I want - I basically only need three languages. Delphi, PHP, and SQL. Hell, all three languages are even cross-platform. I've been in heaven since I discovered Delphi...
Keep in mind however, that nor is this a 'closed-minded fools opinion' - I've used dozens of languages. I've made this decision for a reason - I stick to these languages because they work, and until they prove otherwise (which eventually, I'm sure will happen) I'll keep using what works and what I'm best capable using.
And when I need to migrate again - Luckily, (at least in my biased opinion) because I am a competent programmer with experience with many languages, moving on isn't really that hard - A few months of study and I'll be (at least) VERY good at any language I decide to use. I've had to do this a few times before, and I seriously doubt it won't happen again... When I learned Delphi is an EXCELLENT example of this...
I've spent years learning/using C/VB, etc... Yet today, I'm more competent in Delphi than anything else. And I've only been using it for about 5 years. Hell, it only took a few months before it was my most productive language.