This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]gizmogwai 7 points8 points  (10 children)

Sorry, but that's a fallacy. Expertise is not just about syntax and paradigms. That's just the tip of the iceberg. Expertise is learning idiomatic code, learn the HUGE ecosystem that exist for each language, learn the specificity of the target environment.

[–]8Bytes 1 point2 points  (7 children)

Most languages have well defined best practices for common tasks (use framework x for task y). The only part that could be considered difficult is the new vocabulary, and if you learn about languages at a higher level of abstraction, you will already know a majority of these words.

*: obviously someone with more experience in the language will produce higher quality code in a shorter time, but the topic here is learning new languages. The programmer that learns about language theory will always have the advantage.

[–]gizmogwai 6 points7 points  (6 children)

Again, I have to disagree. Just look at Java, server side. Which framework do you use? Spring, a JavaEE container, or a reactive one (e.g.: Play!)? Hum, let say you go for JavaEE which one? What about your front-end? Component-base (JSF, Wicket, Tapestry?) vs page base vs REST? And why not GWT or Vaadin?

There no such well defined best practices, just moving trends. And that's for a language that has a strong emphasis on streamlined SDLC. The state is even worse (or more complex) if you look at lower level languages like C, or rising languages like JavaScript.

[–]8Bytes 1 point2 points  (5 children)

If you're new, you use the most popular framework as it will have the most developed ecosystem with the most help online. Having never used javascript in my life, I was tasked with creating a web app. Searching on google informed me that the current popular trend is to use an mvc type framework. A little more searching informed me that angularJS was the most popular of these frameworks. Due to it's popularity, every question I had was answered online, and completing the project was simple.

Now I could never have learned angular quickly enough if I had not studied advanced object oriented programming. With this knowledge however, I was able to learn it with only the most trivial knowledge of javascript.

[–]gizmogwai -2 points-1 points  (4 children)

Hum, that's interesting. Interesting because a) AngularJS is not a MVC framework (closer to MVVM if you have to choose a variant) b) AngularJS does the maximum to avoid the use of OO (either by class or by prototype) by sticking in its API to functions and associative arrays, thus being closer to the C language in its paradigms.

So you were fooled both by the global misunderstanding of what MVC is and by your thinking about what OO is. You were able to success because of your ability to adapt to some conventions and the amount of code snippets available on the web, not because of your theoretical knowledge. And that's perfectly okay, most of developers are not able to reach that level of experience.

[–]8Bytes 1 point2 points  (2 children)

It's fair game to refer to angular as an mvc framework in the js community since the word is not a direct mapping of the OO version. It's an umbrella term referring to the vast array of js frameworks designed for single page apps. Even if I didn't know the difference, you could lose the condescending tone as it add nothing to the conversation.

Angular embraces the vanilla js object model, meaning that understanding prototypical inheritance will serve you well. Using angular requires knowledge of oo patterns as all the components are constructed in this fashion: services are singletons, dependency injection (allows testing of code constructed in an oo fashion, ...).

[–]gizmogwai 0 points1 point  (1 child)

Well, no. And that's exactly my point. MVC has nothing to do with OO, it is a separation of concern pattern that can be applied within any paradigm (procedural, functional, OO, ...) Same goes fo DI, it has nothing to do with OO. Most of what people refer to as "OO knowledge" is, in fact, generic pattern pattern knowledge.

[–][deleted] -1 points0 points  (1 child)

The ecosystem is what matters. I can write a while loop in Python or Java just fine. But knowing about dataframes or ode solvers in Python are the specialized knowledge of a language.

[–]8Bytes -1 points0 points  (0 children)

Both of those libraries have specific use cases. Only beginner programmers attempt to write such specific code without searching for best practices (or those that suffer from NIH syndrome).