msgbartop
Just a little about development! Think before you write!
msgbarbottom

11 Apr 08 Google App Engine – When will programmers learn that a language is just a tool?

Google App EngineGoogle has launched a very cool application server, it is called Google App Engine.

Kudos to google again :D

But this application server started a big war on the internet, lots and lots of developers around the world, are very sad because the only supported language in the application server is Python.

Google App Engine has free accounts with limitations, like heroku for example, which is a great application server that supports only Ruby On Rails.

So, what is the problem?

The big problem is that because App Engine is from Google, most of the developers that haven’t not learned Python yet are yelling around because Google App Engine does not support their language.

But the real problem here is that these developers do not understand that a programming language is only a tool you need for work.

Most of the money I get every month is from Java programming, but I have to use many other languages, like Ruby, Bash, ActionScript/Flex, Java, C++, Object Pascal/Delphi, …

<opinion>
If you think yourself as a developer and you can write programs using only one language, you is probably a very bad developer.
</opinion>

I think this bunch of “why did you choose python instead of my beloved Java/Ruby/Perl” is just because it is from google, and everyone wants some google love.

Why no one yells about Heroku supporting only Ruby On Rails? Not even the Merb programmers …

But if google created Heroku (almost it did now), every one would complain about the chosen language.

I liked the idea of Google App Engine, probably this was the push I needed to learn Python (I never liked it, and never had any good reason for that, I just do not want the idea of spaces defining code blocks :D ), the only boring thing is all this yelling about the supported language.

If you enjoyed this post, make sure you subscribe to my RSS feed!

Tags: ,

Reader's Comments

  1. |

    In a way, I agree but I also disagree. A language is just a tool and different languages are better for different tasks. Everyone should know a variety of languages and use the appropriate one for the task at hand. But what happens when you have a bunch of languages all for the same task (web development)?

    I work mostly in PHP for web development: I know all of it’s built in functionality, performance characteristics, limitations, libraries, frameworks, etc. I also know all my own code. It’s just plain not easy to switch to another language; you have to learn all the same-but-different stuff all over again. I don’t have the time for that. I certainly don’t want to have to maintain knowledge in dozens of different platforms either — as long as I have to maintain PHP code, I don’t have much of a desire to fill my head with something different that accomplishes the same result.

    I have much less trouble using VB, C#, or C++ for working on stuff other than web development. It doesn’t cloud my perspective on web development because it isn’t same-but-different, it’s just different.

    Programmers are passionate about programming languages because it’s their primary interface to the machine. One should think they should be as opinionated about that as their choice of operating system, editor, or window manager.

    Reply to this comment
  2. |

    You linked to my blog post, so I thought I’d respond briefly. I am not one who is afraid of other languages – I deal primarily in PHP day to day have also done some Java/Groovy/Perl/VBScript and a bit of Python and CF over the years. My post was more curious as to why PHP wasn’t mentioned given that it’s the largest (or at least one of the largest) platforms out there. My post was written before the ‘language neutral’ statement was made from Google – indeed, even before the AppEngine docs were released. If Google wants to stick with only Python, that’d be fine too. Google could do the PHP world a mountain of good if they were to release a Google-ized version of PHP – changes to the core engine to deal with hosting issues, security and some other ‘gotchas’ PHP-hosters face (mod_php vs fcgi, for example).

    Reply to this comment
  3. |

    One more thing. The “a language is a tool” analogy only goes so far. I don’t want to only use a screwdriver when building something. I want – nay *need* multiple tools based on the job at hand. AppEngine supporting multiple languages wouldn’t just be a way to appease one-language-only developers, but allow a mix-match approach for the platform by giving devs the ability to use a best-of-breed approach regardless of language. Similar to how the .net VM lets you write stuff in C# or VB.NET or other languages, the Google AppEngine has the potential to offer the same sort of cross-language integration for hosted web-apps.

    Reply to this comment
  4. |

    When you think of projects as one person projects, fine, programming languages are just a tool.

    But if you think of enterprise systems where there are teams of programmers, there have to be standards or you can’t provide the support necessary. If you have a team of Java developers and want to build enterprise applications, you can’t look at Google App Engine because it doesn’t meet your requirements. Just like you can’t by a 220V appliance if you live in a 110V world.

    But again, if you are a single developer or don’t have enterprise support needs, you can learn a new language for each project you do, then deal with issues at your leisure. This isn’t something that most enterprise developers can do.

    Reply to this comment
  5. |

    A programming language is not just a tool. Yes, you couldn’t rely on one language, but you need tools be efficient and you need time to learn this language. How much time does this take? Are you writing excellent programs after one day? No, I don’t think so.

    Is the Google App Engine a reason to learn python? Not in my case. I don’t have the time at the moment, to dive deeper in this language.

    Would I have a look at the Google App Engine if it’s support Java? Yes indeed, the child inside me is knocking on the door.

    Python? I think it is not just the language. Which IDE? Which debugger? Which build tools? Continuous integration tools? Libraries? Frameworks?

    I would spend the time, if I need python in a project. I would’t spend this time for the Google Apps Engine.

    Reply to this comment
  6. |

    What if Google released Gmail, but you could only write emails in Swahili?

    Reply to this comment
  7. |

    A programming language is a tool, yes. But when using that tool precludes you from using the vast arsenal of other tools in your toolbox, then it is a problem. And that is why folks want support for more languages.

    It’s as simple as that.

    Reply to this comment
  8. |

    In reply to Steve: if Gmail only worked in Swahili, it would obviously be unusable for the vast majority of the world. The difference is that human languages are *vastly* more complex than programming languages. While it’s obviously unreasonable to expect a user to learn an entirely foreign human language just to use your product, it is not at all unreasonable to expect a professional programmer to be well-versed in multiple languages, and to learn a new one if your platform calls for it. I’ll readily admit that I’m a hack who writes code as a hobby, and yet I’ve had good reason to play with C, C++, Java, PHP, Python, Ruby, Scheme, Haskell, shell, and Javascript. The more languages I’m exposed to, the more software engineering seems to be about managing abstraction. Learning the different idioms and cultural norms associated with particular languages is immensely valuable, as it makes me a better programmer in *every* language I work with, now and in the future.

    There’s no questioning popular demand — according to the App Engine issue tracker, Ruby support is second only to Java/Groovy support as a desired feature. Though I haven’t delved deeply enough into the Java community to speak authoritatively on the language, as a Rails developer I can say that to pick up Python, one need only spend two or three hours working through the official Python tutorial. Sure, at the outset, one isn’t quite as efficient in the language or as knowledgeable of the various community resources available, but he can certainly work at a reasonable pace that improves quickly with practice.

    Google’s intention was not to snub non-Python developers — instead, it’s more likely that the language was already well integrated into their platform as one of the core languages used by their engineers, and that implementing the limitations App Engine applications are subject to was subsequently simpler. Google’s expectation was probably that the extreme form of early adopters that would jump on such a platform were already well versed in Python, or that if they were not, they would be willing to spend a few hours picking up a basic working knowledge of it. The voices from on high have told us that additional language support is forthcoming; in the meantime, consider App Engine an opportunity to learn to appreciate the beauty and simplicity that is Python.

    Reply to this comment
  9. |

    What are you? A Web Designer? A Flash developer?? How stupid is this post?

    Reply to this comment
  10. |

    Koder, I work with software development since 1997

    Steve, Swahili is a human language, not a programming language, you need to talk to people in a language they understand, but a real developer must know at least two programing languages if you learn a second programming language, you will program better in both.

    That said, I agree with you all about the productivity, you cannot be productive in one day in a new programming language, and this is really a problem if you are planning to use the App Engine to publish your company product.

    Simon, for dynamic languages an IDE is not needed as it is needed to develop Java for example, I had the same doubts when I started programming in Ruby, I came from java too, and I could not understand how to work without an IDE, I still sing Eclipse to develop Java programs, I use Flex Builder to work with Flex, I use Visual Studio to work with C++ for windows and KDevelop to work with C++ for Unix (I do not like the Eclipse C++ IDE), but I use only gedit to work with Ruby because I do not need an IDE for that, and it is the same with Python (yes, I tested IntelliJ IDEA, Aptana and Netbeans to work with Ruby, bt none have advantages to justify their height, so I use only a text editor with code highlight for this)

    But this post is my opinion, and I really believe that if you cannot learn a programming language and be productive with it in a week you can not think of yourself as a good developer.
    I started with Delphi, learned C++ (for dos, windows and linux), Leader, Visual Basic, PHP, ASP, Java and all the web languages (XHTML, CSS, Javascript, …)

    After the second programming language, the others are very easy to learn, but this is just my opinion.
    And it is justified in all projects I worked in the last 5 years, all needed more than one language …

    Reply to this comment
  11. |

    ‘Swahili is a human language, not a programming language, you need to talk to people in a language they understand, but a real developer must know at least two programing languages if you learn a second programming language, you will program better in both.’

    How is the basic intent of human language is different from programming language? Even if you know multiple languages, you will always communicate better in your mother tongue than any other language. Learning language is not just about its syntax. The more you use it the better you know about its best practices. Learning a new programming language and be best in it takes time. The question is whether you can afford it, but not your ability to learn new language.

    Reply to this comment
  12. |

    The way I see, we need to learn and increase our knowledge depending on the market.

    The market is telling us to learn Python, if we want to use the Google App Engine.

    If you look at the Google Android project, the same happens, people will need to learn Java if they want to practice with the Android SDK.

    I don’t know what will happen next week, but maybe some other language like PHP will be on the spot. Let it be! Are you ready for that?

    What I teach in my classes at college is that we need to be prepared for this. You can’t put all your money into one programming language, you need to be prepared to change with the market and also depending on your customer need.

    On the same college I teach we have a study group strategy and we teach Java, C#, PHP and Ruby. I was talking to the guys last Saturday and we are going to create a new study group to work with Python. That’s life!

    Reply to this comment
  13. |

    You linked to my post as if I was “yelling around because Google App Engine does not support [my] language”.

    All I was doing was speculating if Google would support Java, and commenting that while this was a hard goal, there were some clues that they would.

    Reply to this comment
  14. |

    Sorry Joe, I was linking all posts about the subject I found in a 5 minutes interval.

    Reply to this comment
  15. |

    I have to agree. A “language” is just a tool. The fact that programming languages are called languages, rather than codecs or instruction sets, reinforces the thought that (fill in the blank) “_______” is more complicated to learn than it is.

    A specific language is just a specific tool.

    Ruby ~ crescent wrench
    Perl ~ vice grips
    Java ~ a jumbo socket and open end wrench set from Sears that comes in the big red cart on wheels with drawers everywhere.
    Python ~ Leatherman tool ( though most everybody hates snakes)

    Just pick the right tool for the job.

    Yes, you can do a lot with a good crescent wrench, especially if you use that crescent wrench for 8 hours a day and have painstakingly customized it’s IDE it for yourself. And you know 5 experts on a crescent wrench you can call at 4:00am and tell you what design patterns to use to make it work as a screwdriver.

    Here is the key >> you have to be a good mechanic to use all the tools. Understanding the basics of programming and a real grokking object-oriented programming in particular.

    Then, a it is a matter of a couple of weeks to become adequately proficient in a new language to begin a project. By the end of the project, you will be fluent.

    Some say that learning the ins and outs of a new language is unproductive and a waste of time. Well, no more so that spending weeks putting in screws with a crescent wrench.

    The root of all of this angst about languages may come improper division of project responsibilities for a project between web application programmers and
    web designers. Web 2.0 makes it damn hard to find both skill sets in one person. But back in the 90’s… the livin’ was easy.

    Reply to this comment
  16. |

    yeah you are just stating the obvious – language is just a tool.
    maybe u r a genius and can learn new programming languages very fast.
    but for most programmers, it takes time. and as any true programmer working in the private sector will tell you, time is a very limited resource.

    you know something, the english language is also just a tool. okay now, let me put you in Iran or China or Japan and working in an entirely non-english speaking environment, and i tell you – language is just a tool!

    Reply to this comment
  17. |

    [quote]
    If you think yourself as a developer and you can write programs using only one language, you is probably a very bad developer.
    [/quote]

    The irony…

    Reply to this comment
  18. |

    Beats Programming Timbaland Style Javascript Tutorial J2ee…

    I didn’t agree with you first, but last paragraph makes sense for me…

    Reply to this comment
  19. |

    I basically agree, however its not really the “new language” which is hard to learn for most developers such as myself its the associated framework that comes along with it. This learning curve amounts to a huge investment of time, and if you already know a few frameworks that has a certain set of ability that you want/require it is simply redundant to learn another unless it makes sense. Google, Amazon, and Microsoft are all coming out with their own cloud application services who wins in that battle will be built around what frameworks are most popular/used.

    Reply to this comment
  20. |

    I do have mixed feeling about your post.

    In terms of Google App Engine I feel it is largely true that Python should not be a barrier to anyone using it and benefiting from it.

    I had a brief try of GAE and found the Python was a relatively simple language to learn. It seemed to lack some of the tricky syntax of Ruby. Overall Python only support is not a compelling reason not to use GAE. BTW I mainly use VB.NET, some C# and Java in a past life.

    But it is rather a stretch to say that “langauge is just a tool”. Hopefully it is a way to be the most productive you can be and work with a team or community of other developers.

    Reply to this comment
  21. |

    The problem is MASS. Google is big and has an effect on things in general – especially perceptions.

    So when somebody this large releases an App Engine it impacts everyone. Is heroku as big as Google? No.

    Languages are just a tool? All things come down the same bytecode or machine code eh?

    Since you know several languages you know they are not equal in how one thinks about and solves problems using them. LISP closures != Java Objects – though yes you could express each concept (however painfully) in either. C++ templates are real generic programming compared to Java generics. In this case some concepts just don’t translate at all.

    Problem spaces are best served by the right tools. APL IMO is the most terse and powerful math language I ever used, BUT I would not want it for UI coding or database interaction.

    I really thought Prolog was great for rule based programming, but attempts I saw to add I/O and windowing were sickening.

    Right tool for the job. Simple.

    Can anyone publicly claim to be a master in every language they can sling some code in? No.

    Being masterful at something means grokking it and that happens with real deep use and suffering. Books get you started but only doing burns it in… deeply.

    People who do more than hop from one language to the next doing nothing very deep don’t lose anything. People who are working to solve real problems and get a profitable product out on a language have a real investment… a hard won bit of wisdom that no podcast can replace.

    In parting, Engine to me implies a decoupled and generic facility for performing some task… not a platform or framework that dictates how you (re)code *your* business model.

    To me this effort by Google falls short of engine and seems like Django++. I might like it, I might use it, but I won’t bash others who feel a bit set upon having to lose their investment and wisdom because of this.

    Reply to this comment
  22. |

    how about assembly?!

    Reply to this comment

Leave a Comment