Re:Re: Developing A State Of The Art Web Application
I have been blogging for over 4 years now (well, 2001 and Antville), but never someone replied in that depth to one of my entries like Ben did. So I think here is the Reply to the Reply. If you want to grasp the whole thing, you should read my first post as well.
if we are talking about operating systems here, I totally agree. But platform is one of these "usemeforeverything" buzzwords (actually, I think it is THE usemeforeverything buzzword right now).
Probably platform is _the_ word for everything, because it is what every developer wants to build. You want to make something that _everybody_ uses, something that is close to world domination. That is fine. But platform means nothing but something rock solid that you can build other things on. If you ask Google, you will see that Eclipse is a platform, Java, Dotnet, Oracle for sure, but also LAMP, Flash, Skype, Google Maps and OS X. Just to name a view. If Java claims to be platform independent I wonder what platform is meant? I guess using platform in the context I meant, was not precise enough. But where I'm rather confident, is the fact, that your platform might have an impact on the success of your application (building a Windows Desktop application offers radically more potential users, than building the same application on, let's say, OS/2).
But when it comes to Web applications (which is the case here), I doubt that the Operating System you build your application on, has a large influence on the success of your app. The diversity of environments present in the current web shows that.
Whitespace is rally a bad example here, because it is a pure fun language that was not designed to be used in real world applications.
Yes, whitespace is a bad example, but was the only choice where almost no one I know would have complained.
But isn't its lack of popularity a big no for using helma? There are only a few companies that use helma, and development with helma is very different from most other popular web frameworks out there.
However, companies like knallgrau are still using it, because they think that the advantages of the platform outweights the learning curve for new employees in the long run.
Definitely. And that was the whole starting point for my thoughts. If you would start a company that builds Web Applications right now, you would definitely go for Ruby on Rails or Python. Some decisions are surely made out of considerations, that conclude in the statement above. But the truth is, that choosing a framework (or environment) to work with is also a lock-in, because you (or the company) develop(s) knowledge about the technology, you get better in using it, know the pitfalls and limitations.
But we never outpace our masters that way. Learning by imitation means that we also copy errors, and then we produce memes of bad pratices that are copied over and over by each generation.
Humans learned by imitation to avoid fire for millions of years, but they did not advance before they broke that meme and tried to control it.
That is probably true. Learning by imitation is one part, there are many other parts. Learning by imitation implies recombination, resampling of existing memes. It is like in music: sometimes by taking samples out of old songs, you create something new, sometimes something better than the original. We _can_ outpace our masters, because everyone has different backgrounds, knows different people and holds different memes.
Counting on imitation is also the reason why in the 90ties, hundrets of search companies where focusing on storing large amounts of websites, instead of focusing on ranking the results.
Please don't compare having no strategy (because doing what the others do can be viewed as a strategy to survive, but can't be considered a strategy in a business sense) to learning from others by imitation.
The reason why I'm trying to learn a new language at least once a year is because I think that knowing many different language designes is a neccessary step to write good code in the few languages I will end up using at work. It is also important to learn by imitation, because a lot of interesting concepts in software programming is written in languages other than Java or PHP.
And that is fine! Because one part of the learning thing is curiosity! Learning other things to grasp their nature, to understand their strengths and weaknesses is very good. But then the question is, why programmers are not very keen on learning Helma (at least in my past experience), I'm sure it has some interesting concepts as well. And just to make it clear: I'm not making the case for Java, PHP or some other language/framework/platform/whatever.
You have a strange way to mix languages together here. I guess most people would put PHP and Perl together in their own "produce fast to write, hard to read code" box. And javascript is somehow even more confusing than these two, but I think I need to write another blog entry for that topic.
The "strange way" is, as everything in this weblog, just the way of my personal viewpoint. I don't care what most people would put together, because the whole entry is about my own perception.
No, its not easier. It's just that PHP and Javas's C-like syntax (i think this is the algol family) look familiar to you at first, because you had expirences with other languages that use that style. If you had studied at MIT where they use Sheme as an introductory language, you would probably have a better start with Haskell than with PHP.
I tried a couple of languages in my short life. I started with Basic on my Atari 1040 STFM (which was by the way _the_ Midi Computer at that time), then used PHP for a while, got introduced to Java, did some things in Javascript, used Actionscript in Flash (which is definitely no language), did VBA in Excel and Access. I never tried a Scheme- or Lisp-like language, but after seeing quite a few lines of code in various languages, in my opinion PHP and Java are pretty nice to read.
As a fact, what you write down in these languages is often very different
from what you where thinking of in the first place:
You rarley think like this:
"I want to create a variable that starts at zero and increment it by one and
multiply a variable n with 25/100 as long as that variable is smaller than the
number 10000000000."
You would rather think "I want to increment that number by 25 percent, 10 million
times", and the Ruby solution is much closer to that than what one would do with
PHP.
In common programming examples I never saw something like this. Sure it is appealing to use simple english language terms to do things. SQL tried something similar, nevertheless it is not really intuitive in my opinion.
The reason I like Ruby is not because it is a language that many people don't know about. In fact I wish the language was more popular, so I could use it at work more often.
I try to use Ruby in many situations because I believe that it shortens the time It takes to produce, modify and explain the code, so I have more time to focus on more interresting things.
What amazes me most about the current uprise of Ruby on Rails is in fact what you state here. The fact that you can develop applications really fast, because the framework focuses on your exact needs when developing Web applications is obviously a big advantage.
if we are talking about operating systems here, I totally agree. But platform is one of these "usemeforeverything" buzzwords (actually, I think it is THE usemeforeverything buzzword right now).
Probably platform is _the_ word for everything, because it is what every developer wants to build. You want to make something that _everybody_ uses, something that is close to world domination. That is fine. But platform means nothing but something rock solid that you can build other things on. If you ask Google, you will see that Eclipse is a platform, Java, Dotnet, Oracle for sure, but also LAMP, Flash, Skype, Google Maps and OS X. Just to name a view. If Java claims to be platform independent I wonder what platform is meant? I guess using platform in the context I meant, was not precise enough. But where I'm rather confident, is the fact, that your platform might have an impact on the success of your application (building a Windows Desktop application offers radically more potential users, than building the same application on, let's say, OS/2).
But when it comes to Web applications (which is the case here), I doubt that the Operating System you build your application on, has a large influence on the success of your app. The diversity of environments present in the current web shows that.
Whitespace is rally a bad example here, because it is a pure fun language that was not designed to be used in real world applications.
Yes, whitespace is a bad example, but was the only choice where almost no one I know would have complained.
But isn't its lack of popularity a big no for using helma? There are only a few companies that use helma, and development with helma is very different from most other popular web frameworks out there.
However, companies like knallgrau are still using it, because they think that the advantages of the platform outweights the learning curve for new employees in the long run.
Definitely. And that was the whole starting point for my thoughts. If you would start a company that builds Web Applications right now, you would definitely go for Ruby on Rails or Python. Some decisions are surely made out of considerations, that conclude in the statement above. But the truth is, that choosing a framework (or environment) to work with is also a lock-in, because you (or the company) develop(s) knowledge about the technology, you get better in using it, know the pitfalls and limitations.
But we never outpace our masters that way. Learning by imitation means that we also copy errors, and then we produce memes of bad pratices that are copied over and over by each generation.
Humans learned by imitation to avoid fire for millions of years, but they did not advance before they broke that meme and tried to control it.
That is probably true. Learning by imitation is one part, there are many other parts. Learning by imitation implies recombination, resampling of existing memes. It is like in music: sometimes by taking samples out of old songs, you create something new, sometimes something better than the original. We _can_ outpace our masters, because everyone has different backgrounds, knows different people and holds different memes.
Counting on imitation is also the reason why in the 90ties, hundrets of search companies where focusing on storing large amounts of websites, instead of focusing on ranking the results.
Please don't compare having no strategy (because doing what the others do can be viewed as a strategy to survive, but can't be considered a strategy in a business sense) to learning from others by imitation.
The reason why I'm trying to learn a new language at least once a year is because I think that knowing many different language designes is a neccessary step to write good code in the few languages I will end up using at work. It is also important to learn by imitation, because a lot of interesting concepts in software programming is written in languages other than Java or PHP.
And that is fine! Because one part of the learning thing is curiosity! Learning other things to grasp their nature, to understand their strengths and weaknesses is very good. But then the question is, why programmers are not very keen on learning Helma (at least in my past experience), I'm sure it has some interesting concepts as well. And just to make it clear: I'm not making the case for Java, PHP or some other language/framework/platform/whatever.
You have a strange way to mix languages together here. I guess most people would put PHP and Perl together in their own "produce fast to write, hard to read code" box. And javascript is somehow even more confusing than these two, but I think I need to write another blog entry for that topic.
The "strange way" is, as everything in this weblog, just the way of my personal viewpoint. I don't care what most people would put together, because the whole entry is about my own perception.
No, its not easier. It's just that PHP and Javas's C-like syntax (i think this is the algol family) look familiar to you at first, because you had expirences with other languages that use that style. If you had studied at MIT where they use Sheme as an introductory language, you would probably have a better start with Haskell than with PHP.
I tried a couple of languages in my short life. I started with Basic on my Atari 1040 STFM (which was by the way _the_ Midi Computer at that time), then used PHP for a while, got introduced to Java, did some things in Javascript, used Actionscript in Flash (which is definitely no language), did VBA in Excel and Access. I never tried a Scheme- or Lisp-like language, but after seeing quite a few lines of code in various languages, in my opinion PHP and Java are pretty nice to read.
As a fact, what you write down in these languages is often very different
from what you where thinking of in the first place:
You rarley think like this:
"I want to create a variable that starts at zero and increment it by one and
multiply a variable n with 25/100 as long as that variable is smaller than the
number 10000000000."
You would rather think "I want to increment that number by 25 percent, 10 million
times", and the Ruby solution is much closer to that than what one would do with
PHP.
In common programming examples I never saw something like this. Sure it is appealing to use simple english language terms to do things. SQL tried something similar, nevertheless it is not really intuitive in my opinion.
The reason I like Ruby is not because it is a language that many people don't know about. In fact I wish the language was more popular, so I could use it at work more often.
I try to use Ruby in many situations because I believe that it shortens the time It takes to produce, modify and explain the code, so I have more time to focus on more interresting things.
What amazes me most about the current uprise of Ruby on Rails is in fact what you state here. The fact that you can develop applications really fast, because the framework focuses on your exact needs when developing Web applications is obviously a big advantage.