6 ms·
Five languages in seven lines, or how not to do web development
- jcl 18y agoTruth be told, it's not too bad considering all it does. Each language is being used for its strengths. Programming at that level requires HTML and Javascript. Python is integrated as part of Mako; calling them separate languages is valid but questionable. (Given that the author is maximizing the number of languages, I'm a little surprised jQuery wasn't included in the list.)
- jwilliams 18y agoYeah I don't see the beef either - what is the counterpoint "ideal" way of doing it? One language? Because you'd have to select HTML by default... And I'm guessing that might not make for the best user experience. Also surprised they didn't include (implied) CSS.
- jdminhbg 18y agoI think you need to at least move the JS out and write it unobtrusively. Sticking 'onClicks' all over the place inside a templating language is a recipe for spaghetti.
- swombat 18y agoSure, but the point is, to put together any decent web page template, you'll need at least: 1) Your server-side language (e.g. Ruby) 2) Your templating language (e.g. ERB, which may be very similar to 1) 3) HTML 4) CSS 5) Javascript 5 languages is pretty much a minimum unless you're doing something trivial. I'll agree that the onclick should be extracted, but as has been pointed out in other places, this is a quick documentation example, so it is reasonable to use onclick there to keep it brief. PS: Also, perhaps worth pointing out that HTML and CSS aren't actually programming languages... Should they count? probably not.
- scott_s 18y agoThey're still languages, so I think they should count, because it still takes a mental context switch when going from any language to another.
- axod 18y agoThe number of languages isn't the issue. The issue is putting them all together in the space of a few lines. It's bad organization.
- jwilliams 18y agoActually just curious - but what is a means of separating them?
- cake 18y agoI wouldn't call jQuery a language. jQuery is JavaScript.
- axod 18y agolibrary/frameworky thing. It's not javascript though. Try getting help with a jQuery question in #javascript...
- jcl 18y agojQuery is JavaScript in approximately the same way CLOS is Common Lisp. Sure, jQuery is implemented in and uses JavaScript, but idiomatic jQuery differs enough from idiomatic JavaScript that it might be considered another language. ...And, if that handwaving fails to convince you, jQuery's selector string format is at least as much a language as the pager formatting string that merits its own language in the article. :)
- gaika 18y agoBug in parsing: line 2 is mostly javascript, not mako.
- bhiggins 18y agoyikes, missing two languages. everyone knows number of lines should equal number of languages.
- tlrobinson 18y agoTechnically the first 3 lines have all five languages.
- psadauskas 18y agoSo in Rails best-practices, you'd still have 3 "languages", they'd just be spread around in 3 files. I'm a Haml fan, so I'd have a view template like: = paginate(@employees) %ul - @employees.each do |employee| %li = employee.first_name = employee.last_name and then a helper to fill out the "paginate", or some plugin to handle it for me, and finally an unobtrusive js file. So I get 3 languages. The only real WTF I see here is the "onClick", and for an example in some documentation about a framework, its forgivable. Could also be broken up into separate files, because the pagination part is a bit complex for a view. Again, though, its a documentation example, on the paginator helper, no less.
- s3graham 18y agoI think "$('#my-page-area')" is #6 actually (doing a CSS-style selector probably via jQuery or something) I'm not sure that it's "how not to do web development", but it's certainly "this is common: what's a better way?".
- mcav 18y agoNothing wrong with this example. Would you rather see XSLT? Really?
- jrockway 18y agoThere are other ways to build HTML without templating. Take a look at Template::Refine, for example: http://search.cpan.org/~jrockway/Template-Refine-0.02/lib/Template/Refine/Cookbook/Interpolate.pod http://search.cpan.org/~jrockway/Template-Refine-0.02/lib/Te... http://search.cpan.org/~jrockway/Template-Refine-0.02/lib/Template/Refine/Cookbook/Attributes.pod http://search.cpan.org/~jrockway/Template-Refine-0.02/lib/Te... (Those are two different examples, which is unclear due to news.yc's URL truncation.)
- thomasfl 18y agoEven when using serverside javascript, you still end up with at least 4 languages; javascript, html, css and occasional sql queries. Rails is actually not that bad, letting you use ruby for everything from javascript and html templates to sql queries and configuration. The future is languages that can be tweaked to express anything like lisp, ruby, python, groovy and one day also javascript.
- axod 18y agoWhat's even more worrying is people posting here defending it. It's plain ugly. Call me old fashioned, but I'm pretty much a one language per file guy.
- herval 18y agoI'm curious to know how do you do web development. Mind sharing?
- biohacker42 18y agoPython, JavaScript and HTML puts you at 3 and that's the least you need for web development. Or are you supposed to do nothing but back end in Python, or just HTML front ends?
- datico 18y agoThe point as I see it, normally one thinks of programming in "a" language, not 5-7 at once! Just imagine trying to rewrite this paragraph in multiple foreign languages...let's see, nouns in Japanese, verbs in French, adjectives in Russian, and the remainder in Taglish? Illustrates just how demanding web development is. And consider, not only are there best practices to follow for each real language, the conclusion reveals there must be implicit best practices (or at least opinions) for mixing them as well.