言語を学ばずにフレームワークから学ぶのはアリか? - /r/learnprogramming

今回は、いきなりフレームワークから学ぶことに対する疑問と、それに対する意見のついたスレを紹介。

タイトル:

If you want to learn code but don't know where to start
プログラミングを学びたいけど、どこから始めたらいいか解らない人がいたら

本文:

I was in the same boat some months ago but found the roadmap in this blog really helpful. What we really can learn in starting to build our own cool projects. Hope you guys found this helpful :) http://jimmy-li.net/blog/programming/how-to-get-started-in-web-development/#comments

僕も数ヶ月前は同じ状況にあったけど、このブログの計画表がすごく役に立った。自分だけのクールなプロジェクトを作り始めることで、多くを学ぶことができる。参考になれば :) http://jimmy-li.net/blog/programming/how-to-get-started-in-web-development/#comments

リンク先にあるような、フレームワークから入ることへの疑問

Is anyone else bothered by this common advice to start by learning frameworks? I see this advice a lot, but it doesn't make any sense. It's kinda like saying "Learn how to drive before you invent the wheel."
For example, if you don't know Javascript, it seems like jQuery is going to be a mysterious black box that you won't fully understand. And when things go wrong, you won't fully understand how to debug it.

こういうよく耳にする、フレームワークから学び始めろっていうアドバイスが気になるのって僕だけ?本当によく聞くんだけど、道理にかなってないよ。「車輪を発明する前に、運転を習おう」って言ってるようなものだ。例えば、JavaScriptのことを知らないなら、jQueryは十分に理解できない謎めいたブラックボックスに見えるだろう。上手くいかなかったときにも、どうやってデバッグするのか理解できないだろう。

人それぞれ

>"Learn how to drive before you invent the wheel."
i learned to drive and have never made a wheel in my life.
on topic, frameworks make it easy for people to get in and get building without fully understanding what it is the framework is doing. we have that luxury of not NEEDING to know things to get the job done.
hopefully leads to someone diving in deeper and figure things out, or maybe they don't dive in past the framework but master the framework. at the very least its made a nice hobby for someone

>「車輪を発明する前に、運転を習おう」
僕は運転を習ったけど、車輪は一度も作ったことがない。
話に戻ると、フレームワークはそれが何をやってるのか十分に理解することなく、簡単に入門し、ものを作ることができる。何かをやりとげるのに何かを知ることは必須ではない。
ある人は深く学んでいき理解するかもしれないし、ある人はフレームワーク以上のことには突っ込まず、フレームワーク自体を極めるかもしれない。最低でも、誰かにとってのよい趣味にはなっただろう。

やっぱおかしくない?

>we have that luxury of not NEEDING to know things to get the job done.
This is the part that bothers me. We seem to be heading toward a society that is filled with people who's lives are run by technology and no one knows anything about them. Phones, tablets, and even general purpose computers are being locked down. Consumers are being discouraged from even trying to learn how their device works. And companies use the draconian DMCA to legally prevent people from tinkering. People are told not to worry how things work. And ooh, look, here's Angry Birds Star Wars, isn't that cool?!
But now we seem to be convincing the developers of the applications that run on those devices that they also don't need to know how they work. And not only that, we're trying to convince them that they don't even need to know how the languages they use work.
I have a big problem with this.

>何かをやりとげるのに何かを知ることは必須ではない。
ここが気になるんだよね。大勢の人の生活がテクノロジーによって動かされているというのに、誰もテクノロジーについて何も知らないという社会に向かっているように思う。電話、タブレットの他に、汎用コンピュータでさえロックダウン (訳注: 上手く訳せず) されている。消費者はデバイスがどう動いてるのか学ぼうとすることさえ推奨されていない。企業は厳格なDMCA (デジタルミレニアム著作権法) を使い、いじくろうとするのを合法的に防いでいる。ものがどう動いているのか心配するなと教えられる。そんで、見て見て、これがAngry Birds Star Warsだよ、かっこよくない?なんて言う。
今度はそれだけじゃなく、前に挙げたデバイスで動くアプリケーションの開発者にも、どう動くなんて知らなくていいと思わせようとしている。さらには、言語がどう動くかすら知らなくていいと思わせようとしている。
これっておかしいと思うんだけど。

深さの問題?

To be a little fair, I don't exactly need to know all the way down to the architecture of the cpu to be able to write a program. Now, obviously I need to know how the language works, and obviously I need to know how the OS works. (I definitely agree with you on those) I'm just saying there's a point where knowing how deep the rabbit hole goes can be tiresome and largely useless.

ちょっとフェアになると、プログラムを書くのにCPUのアーキテクチャまで深く知っている必要は厳密にはない。ただ、言語がどう動くか、OSがどう動くかは当然知っている必要はある (これに関しては全く同感だ) 。ただウサギの穴がどんだけ深いかってことを知るのが、退屈で、ほとんど役に立たなくなる地点があるということを言いたいんだ。

時間、リソース、興味、やっぱり人それぞれ

I agree that people need to dive in a little further and figure out what's going on. but not everyone has the time, resources, or even interest.
there will be those that tinker and learn more, and those that just tinker to have fun.

ある程度深く入り込んで何がどうなってるのか理解する必要があるってことは同意する。ただ、皆が皆、時間、リソース、それどころか興味があるとは限らない。
いじくってもっと学ぶ人もいれば、楽しむためだけにいじくる人もいる。

感想

言語やアーキテクチャについて、深いところを知らなくてもアプリなり、Webサービスなりは作れてしまうわけで、それを良しとしない人がいるのも理解できる。自分としては本当に知識が必要になった時に勉強する、ってスタイルでいいような気はするのだけど。ちょっと話は違うけど、情報処理技術者試験で習う基数変換なんかの基礎理論も、現場では使わないっていう人も多いようだ。実際のところはどうなんだろうなあ。
今回は書き上げるのに2時間かかった…。上手く訳せないところがあったり、いくつか誤訳っぽいところもあるし、本当、翻訳って難しいなあ。