記事検索
逆アクセスランキング
ブログランキング

スポンサードリンク
アーカイブ

スポンサード リンク

学ぶ言語は「広く浅く」か「狭く深く」のどっちか


1:2016/02/19(金) 19:29:03.86 ID:
初心者なんだが
使い道に応じて色んな言語があるしそれぞれの技術が必要に思えるが
一つを極めておけばあとで他の言語にも応用が利きやすいようにも思える
2:2016/02/19(金) 19:41:12.71 ID:
エンジニアリングには言語よりRDBとかネットワークみたいな個別の分野の知識が必要
言語はCとHaskellとLispやればいいよ
後はその都度使うはめになった時に勉強すれば済む話
17:2016/02/20(土) 01:11:59.00 ID:
文法がCライクは必須、とか言ってるアホもいれば
haskellとかlispやるぐらいならもっとメジャーな言語やった方がいい、とか言うアホもいると
C++勧めるやつとか脳味噌腐ってんじゃねーのか

>>2がいちばんマシな回答してるわ >>1にできるかどうかは疑わしいが
3:2016/02/19(金) 19:45:15.93 ID:
人を売る立場なら浅いけどなんでも知ってるほうがいい
作る立場なら特定のことのスペシャリストのほうがいい
4:2016/02/19(金) 20:56:20.69 ID:
haskellとかlispやるぐらいならもっとメジャーな言語やった方がいい
情報量も多いしとっつきやすいから
それに一個身に付けてしまえば大抵あとから学ぶ言語もわかるから
だからCかC++,java,python,Rubyあたりがいいと思う
5:2016/02/19(金) 21:11:27.52 ID:
一つの言語は常に使うようにした方がいい
文法がCライクは絶対条件
今ならjavaがいいと思う。C#でもいい

pythonは好きだけど、あれ書きすぎるとセミコロンを忘れるようになる
phpはテキトー過ぎるし組み込み関数もなんか変。web志望ならphp一択だけど。
rubyは触ったこと無い
vbはウンコ
vbaは事務員になれる
7:2016/02/19(金) 22:48:26.65 ID:
C++を深くやる
そうすれば他のメジャーな言語は3日で習得できる下地ができる
最初から浅く広くやろうとすると産廃コーダーが出来上がる
8:2016/02/19(金) 22:50:09.84 ID:
深く理解するには広く知らなければならない
9:2016/02/19(金) 23:01:23.17 ID:
自信がないからそれっぽいことテキトーに言って教えてる気になったオッサンは害悪だよね
10:2016/02/19(金) 23:25:32.50 ID:
ふかいあなをほるには、ある程度ひろい面積がいる
同様に、いろいろ入門してから、奥義をきわめる
11:2016/02/19(金) 23:27:23.00 ID:
どっちでもいいけど、教えるっていうかきちんと自分の言葉でアウトプットしていかないと浅くみえる
12:2016/02/19(金) 23:32:43.09 ID:
どちらにしても大事なのは目的
C++ は手段が目的になりやすいので要注意
13:2016/02/20(土) 00:14:50.44 ID:
C++で理解した気になるのが一番危険かもね
最も強力で非常に醜悪なキメラ言語だから
14:2016/02/20(土) 00:24:52.16 ID:
>>13
C++だと自由すぎて、他の言語を使ったときにC++だとできるからという理由だけで、無理に変な実装をしようとするやつもいるからな。
15:2016/02/20(土) 00:37:13.32 ID:
C++はテンプレートの特殊化が神がかりすぎててヤバい
まぁ.Net C#がいいんじゃないかな
Javaはautoとかvarに該当するものがないのがちょっと
16:2016/02/20(土) 00:39:34.05 ID:
C++はruby Python の前に独学でやると変な拗らせ方するからもし独学なら後にした方がいいと思う
18:2016/02/20(土) 07:52:25.45 ID:
c++がいいよ
美しいオブジェクト指向の考え方が身に着く
低レベルだからこそイディオムやパターンの有り難みに気が付く
悪い習慣をコンパイルエラーにする事の重要さを学べる
他の言語では隠蔽される低レベルな資源管理方法を知れる
イミュータブル(const)である事の素晴らしさを強く体感出来る
邪悪だが便利なメタプログラムというパラダイムに馴染める
バイナリや中間コードやJIT結果を意識したコーディングができるようになる
c++を学ぶメリットは挙げればキリがないな
他の言語ではなかなか身に付かない
そしてできないと品質に大きく影響する
そういった類の知識を学ぶには最適の言語だ
此れ迄様々なプロジェクトでノベ数千人を超えるエンジニアと出会って来たがc++を経験してないプログラマは事実として漏れなく低品質だった
21:2016/02/20(土) 10:40:24.76 ID:
>>18
まっとうな理解力のある奴ならな。
たいていの場合、普通にコンパイルして計算すりゃいいところでも
constexpr でコンパイル時に計算する!みたいな馬鹿が出来上がる。
22:2016/02/20(土) 12:19:16.65 ID:
>>18
オブジェクト指向をどうやって身につけるんだよ?

独学でC++を勉強するとオブジェクト指向を理解するのに時間がかかると思う。
19:2016/02/20(土) 09:39:17.10 ID:
C++はチームで開発するには向いてるけれど、個人で使うだけならCのほうが良いと思うよ。
20:2016/02/20(土) 10:34:04.34 ID:
仕事でいうならJavaとJavaScriptができれば後はどうでもいいな
23:2016/02/20(土) 12:21:25.57 ID:
× 広く浅く
× 浅く深く
○ 広く深く、それが一番効率的
24:2016/02/20(土) 14:30:16.67 ID:
数学を広く深く勉強しようとしてあきらめました。
東大理三レベルでもしょせん学生レベルだと思い知った。
25:2016/02/20(土) 14:41:42.04 ID:
東大の理三って医学部だからな
数学なんか一般教養程度しか知らないだろ
26:2016/02/20(土) 16:08:48.51 ID:
広くと言っても、大きく分けたら、三種類位しか無いだろ。
27:2016/02/20(土) 16:43:49.69 ID:
まずこの本で、オブジェクト指向を学ぶ
スッキリわかる Java入門 第2版、2014

その後、この2冊を順に読む
たのしいRuby 第4版、2013
みんなのPython 第3版

この順番は、漏れが編み出した、
言語を学ぶための基礎で、最速メソッドです
28:2016/02/21(日) 13:07:13.31 ID:
Cで基本的なプログラミング覚えて
C++でオブジェクト指向身につける
そうすりゃどんな言語にも対応可能
深くC++やって
浅くその他の言語仕様知ってればいいよ
29:2016/02/21(日) 13:20:32.11 ID:
>>28
>Cで基本的なプログラミング覚えて
>C++でオブジェクト指向身につける
>そうすりゃどんな言語にも対応可能

LispにもMLにもPrologにも対応できんのかそりゃ凄えな(鼻ホジー
35:2016/02/21(日) 14:55:55.15 ID:
>>29
Lispとかそういうのすぐだしちゃうやついるよなぁ
37:2016/02/21(日) 15:03:50.86 ID:
>>35
そうか。まあ別にお前さんがLispやらんでもいいと思うからそれでいいんじゃないか。
38:2016/02/21(日) 15:07:18.08 ID:
>>29
初めてc覚える
c言語からオブジェクト指向を覚える
そのハードルに比べたら
関数型とか覚えることなんて
たいしたことない(ハナホジー
30:2016/02/21(日) 13:21:37.59 ID:
C++も悪くないがみマルチパラダイム言語でオブジェクト学習するとオブジェクト指向モドキで終わってしまいそう。
オブジェクト指向は言語だけ覚えても意味がない。
分析、設計がオブジェクト指向であるからこそ、前行程との解離を少なくするためのオブジェクト指向言語なのだから。
31:2016/02/21(日) 13:26:08.73 ID:
C++でもJavaでもなんでもいいから、とりあえず基本的なforとかifとかの文法、classみたいな型の仕組みを知れ(1週間)
そっからSICPとか読みながら型システムやらリスト構造の原理をまなべ(3週間)

そっからさきは、2つの道がある
C#とかJavaでOOPっぽいクラスについて学び、インターフェースとは何かとかを知る。
C++のテンプレートについて学び、GenericProgrammingや関数型プログラミングを知る。
32:2016/02/21(日) 13:39:53.89 ID:
C++のテンプレートを知ると関数型プログラミングを知ったことになるとかどこの星の話なんだろう
34:2016/02/21(日) 14:43:13.32 ID:
>>32
ごめん言葉足らず

非破壊、バインド、関数オブジェクト、再帰などを使うことになるから
段々と関数型プログラミングの知識が必要になってくるよくらいの意味でした
なのでそっから更に別途、関数型言語に傾倒していく人もいるよね
36:2016/02/21(日) 15:03:08.93 ID:
>>34
理解した。

オレは>>2だが、
ポインタと再帰と継続を理解すればプログラミングの基礎を理解したことになるので
CとHaskellとLisp(特にScheme)を勧める。
手続き型のトイ言語のコンパイラを関数型言語で書き、
関数型のトイ言語のコンパイラを手続き型言語で書く、というのがいい経験になった

あとC++は単独でやってわかるようになるような言語じゃないし、クラスベースの
オブジェクト指向が本当に再利用可能性に貢献するのは複数の大規模開発の
基盤整備時だけだと思っている。後は開発者のスタイルの趣味の問題にすぎない。
有名なstaticおじさんにも三分の理くらいはある。
33:2016/02/21(日) 13:59:26.42 ID:
初心者が心配することじゃないよ。
とりあえずなんでもいいからひとつの言語でモノを作れるようになることが先決で、言語云々はそのあとに考えること。
39:2016/02/21(日) 15:08:59.52 ID:
あのC++を身につけることができたというのが本当ならばそうかもしれんねえ
羨ましいこった
40:2016/02/21(日) 16:22:48.55 ID:
言語が抽象化されていくとアトム化が複雑になるだけで同じことをするにも直観的じゃなくなるんだよな。 ようするに
高階化が進むだけでトレードオフによってエントロピー自体が減ること表現能力は直行しているんだよな。残念なことに、
42:2016/02/21(日) 18:18:06.36 ID:
髪を増やすプログラムを書ける言語が知りたいのです
44:2016/02/22(月) 14:16:39.75 ID:
>>42
C++なら何でもできるぞ
つまり
50:2016/02/23(火) 00:33:48.41 ID:
>>44
江添亮みたくプログラムの書けない人間になって終わりだろw
48:2016/02/22(月) 20:09:53.47 ID:
広く浅くだろ普通
狭く深くとは、1つ2つを深く掘り下げるまで他の言語学んじゃだめってことか?
49:2016/02/22(月) 22:05:57.58 ID:
>>48
なんだその理屈w
広く浅くだったら、それなりに有名な言語をひととおり触るまでひとつを深く掘り下げちゃだめなのか?
52:2016/02/23(火) 11:08:32.63 ID:
SEだったら広く浅く、PGだったら深く
54:2016/02/24(水) 20:37:02.06 ID:
C++を深くってすげー大変だよ。
やり過ぎると他の人間が理解出来ない。
55:2016/02/24(水) 23:15:21.98 ID:
独学でCとかやる前に
下地として必要不可欠な知識って何がありますかね?アセンブラ?というものは...?
ど素人ですみませんでも何でもするから御教授願いします
56:2016/02/25(木) 00:20:57.13 ID:
下地は要らない。
やってみて足らないと思ったのを学んでいけば良い。
57:2016/02/25(木) 21:36:10.65 ID:
一番大事な下地は何かを作りたいという熱意と決して諦めない根性
それがあるといいけれど
59:2016/02/26(金) 18:55:20.37 ID:
C を独学でやるのは無謀
おぼえることが多かろうと Javaからやるのが無難
あえてというなら C より先に アセンブラ
60:2016/02/26(金) 19:33:32.38 ID:
Cをポインタのさわり位までやってから、JavaかC#。関数型言語なんてぶっちゃけどうでもいい。
61:2016/02/26(金) 19:45:47.90 ID:
一つの言語で何から何までやらなくて良いから最初は何でも良い。
でもアセンブラから始めるのは無いな。
62:2016/02/26(金) 22:28:39.80 ID:
Cがいいんじゃないかね。
結局どんな言語やるにしてもまともに仕事するならメモリは意識せにゃならんわけだし。
参照、値渡しが明示的なのも取っ付き易いと思う。
63:2016/02/26(金) 23:20:05.47 ID:
C++なんて新入社員にさわらせたら「キチガイに刃物」
65:2016/03/01(火) 23:46:09.37 ID:
1. C言語でメモリを意識したプログラミングを身に着ける
2. C++でオブジェクト指向を身に着ける(Java, C#でもよい)
3. C言語でオブジェクト指向してみる
4. Pythonでスクリプト言語に触れる(JavaScriptでもよい)
5. C言語でコードハックしてみる
6. Haskellで関数型言語に触れる(Common Lispでもよい)
7. C言語で関数型のように書いてみる
8. 適材適所で好きな言語で書いてみる

程よく抽象化している言語はC言語なんだよなぁ
今の言語はオブジェクト指向と関数型の思想を取り入れているから概念として知っておいた方が、新しい言語に触れた時に助けになるだろう

できるだけ速く動く実行形式が欲しければ、C言語やC++ => (動的)ライブラリ向け
できるだけ楽したければ、スクリプト言語 => バッチや捨てプロ向け
大規模開発になるならば、Java、C# => フロントエンド向け
66:2016/03/03(木) 10:51:27.95 ID:
PHPとかJavaとかRubyみたいなオワコン言語以外なら何だっていいよ
69:2016/03/03(木) 20:55:57.46 ID:
やりたいことが具体的にないなら、C#でWindowsFormアプリがいいんじゃね。
Cとかから始めると、まず一週間で飽きるよ
71:2016/03/04(金) 23:05:15.35 ID:
>>69
そのレベルでいいなら scratch でいいんじゃねーの。
74:2016/03/06(日) 11:23:45.22 ID:
具体的にやりたいことが先にあるならそれに合わせて選べ

それがないなら英語学んだほうがマシ
75:2016/03/16(水) 17:56:22.11 ID:
学んでも使わなければ意味は何もないんだよ。
学ばなくても作れば意味がある。

俺は学ぶ前に作ってるよ。いつもそうだよ。
76:2016/03/22(火) 14:47:01.60 ID:
マジレスしてやる。
UNIXとC言語をやっとけばなんとかなる。
77:2016/03/24(木) 00:16:02.35 ID:
SICPの原著を読みながらemacsでelispとschemeを弄るぐらいが良い
プログラミング入門に必要な要素が一通りそろう
78:2016/03/24(木) 12:40:55.18 ID:
アセンブラだけは無くなることはない
81:2016/03/26(土) 22:40:47.13 ID:
>>78
そう遠くない将来無くなるかもよ
83:2016/03/27(日) 14:45:28.55 ID:
>>81
バイナリ読んで動くCPUがある限りは不滅だろう
86:2016/03/28(月) 00:10:21.68 ID:
>>83
そのノイマン型CPUが駆逐されるかもしれないという話だろ
88:2016/03/28(月) 07:52:20.83 ID:
>>86
可能性としては否定はしないけど
これだけ普及しちゃうと確率としてはかなり低いね
85:2016/03/27(日) 16:11:23.97 ID:
日経ソフトウェアとか読んで
プログラミング出来るようになったヤツっているんかなぁ?
(´・ω・`)
87:2016/03/28(月) 00:14:06.44 ID:
>>85
日経ソフトでWindows APIを研究した。
結果、ある程度Winアプリが書けるようになった。






初心者であれば、広くは考えずに一つの言語に絞って習得した方が後々の展開が楽だと思いますね。
それ以降であれば、
私個人としてはどちらかと言えば「狭く深く」寄りですが、
「多少深めに2,3言語使える」
「他の言語を必要な都度触れる程度」
がバランスが良いかなと(´・ω・`)


コメントする

名前
 
  絵文字
 
 

スポンサード リンク

スポンサード リンク